相当于Python的rsplit的JavaScript

a6b3iqyw  于 2023-11-15  发布在  Java
关注(0)|答案(4)|浏览(143)

str.rsplit([sep[,maxsplit]])
返回字符串中单词的列表,使用sep作为分隔符字符串。如果给定maxsplit,则最多进行maxsplit拆分,最右边的拆分。如果没有指定sep或None,则任何空白字符串都是分隔符。除了从右边拆分,rsplit()的行为类似于split(),下面将详细描述。
http://docs.python.org/library/stdtypes.html#str.rsplit

5kgi1eie

5kgi1eie1#

String.prototype.rsplit = function(sep, maxsplit) {
    var split = this.split(sep);
    return maxsplit ? [ split.slice(0, -maxsplit).join(sep) ].concat(split.slice(-maxsplit)) : split;
}

字符串
这一个功能更接近Python版本
“blah,derp,blah,beep”.rsplit(“,",1)// [ 'blah,derp,blah','beep' ]

h4cxqtbf

h4cxqtbf2#

也可以使用JS String函数split+slice
Python:
'a,b,c'.rsplit(',' -1)[0]将给予您'a,b'
JavaScript:
'a,b,c'.split(',').slice(0, -1).join(',')也将给予您'a,b'

wljmcqd8

wljmcqd83#

假设JavaScript分割的语义是可接受的,使用以下代码

String.prototype.rsplit = function (delimiter, limit) {
  delimiter = this.split (delimiter || /s+/);
  return limit ? delimiter.splice (-limit) : delimiter;
}

字符串

fnx2tebb

fnx2tebb4#

我认为这是更“等效”,直到一个错误被发现,“关闭”是不能接受的答案。特别是如果你试图端口Python代码不知道JavaScript。

String.prototype.rsplit = function(sep, maxsplit) {
    var result = []
    if ( (sep === undefined) ) {
        sep = " "
        maxsplit = 0
    }

    if (maxsplit === 0  )
        return [this]

    var data = this.split(sep)

    if (!maxsplit || (maxsplit<0) || (data.length==maxsplit+1) )
        return data

    while (data.length && (result.length < maxsplit)) {
        result.push( data.pop() )
    }
    if (result.length) {
        result.reverse()
        if (data.length>1) {
            // thx @imkzh
            return [data.join(sep), ...result ]
        }
        return result
    }
    return [this]
}

字符串

相关问题