7

我想使用 split 函数将 Javascript 中的字符串拆分为两部分。

例如我有字符串:

str='123&345&678&910'

如果我使用 javascripts 拆分,它将它拆分为 4 个部分。但我只需要考虑它遇到的第一个“&”,它就需要分成两部分。

正如我们在 Perl 拆分中所做的那样,如果我使用如下:

($fir, $sec) = split(/&/,str,2)

它将 str 分成两部分,但 javascript 只给了我:

str.split(/&/, 2);
fir=123
sec=345

我希望 sec 是:

sec=345&678&910

我怎么能在Javascript中做到这一点。

4

6 回答 6

6
var subStr = string.substring(string.indexOf('&') + 1);

查看此类似问题以获取其他答案:

仅在指定字符的第一个实例上拆分字符串

于 2012-06-22T07:04:08.857 回答
4

您可以使用match代替split

str='123&345&678&910';
splited = str.match(/^([^&]*?)&(.*)$/);
splited.shift();
console.log(splited);

输出:

["123", "345&678&910"]
于 2012-06-22T07:06:36.753 回答
3

split您可以使用以下技巧来保持角色:

var str='123&345&678&910',
    splitted = str.split( '&' ),
    // shift() removes the first item and returns it
    first = splitted.shift();

console.log( first ); // "123"
console.log( splitted.join( '&' ) ); // "345&678&910"
于 2012-06-22T07:10:40.823 回答
1

我写了这个函数:

function splitter(mystring, mysplitter) {
    var myreturn = [],
        myindexplusone = mystring.indexOf(mysplitter) + 1;

    if (myindexplusone) {
        myreturn[0] = mystring.split(mysplitter, 1)[0];
        myreturn[1] = mystring.substring(myindexplusone);
    }

    return myreturn;
}

var str = splitter("hello-world-this-is-a-test", "-");

console.log(str.join("<br>"));
//hello
//world-this-is-a-test​​​

输出将是一个空数组(不匹配)或具有 2 个元素的数组(拆分之前和之后的所有内容)

演示

于 2012-06-22T07:35:22.163 回答
1

我有这个:

var str='123&345&678&910';
str.split('&',1).concat( str.split('&').slice(1).join('&') );
//["123", "345&678&910"]



str.split('&',2).concat( str.split('&').slice(2).join('&') );
//["123", "345", "678&910"];

为了方便:

String.prototype.mySplit = function( sep, chunks) {
   chunks = chunks|=0 &&chunks>0?chunks-1:0;
   return this.split( sep, chunks )
              .concat( 
                  chunks?this.split( sep ).slice( chunks ).join( sep ):[]
               );
}
于 2012-06-22T07:51:42.893 回答
0

split()和的使用怎么样replace()?:

鉴于我们有那个字符串str='123&345&678&910'我们可以做

    var first = str.split("&",1); //gets the first word
    var second = str.replace(first[0]+"&", ""); //removes the first word and the ampersand

请注意,它split()返回一个数组,这就是为什么建议使用first[0]获取索引的原因,但是,如果没有获取索引,它仍然可以根据需要工作,即。first+"&"

随意将“&”替换为您需要拆分的字符串。

希望这可以帮助 :)

于 2016-09-26T09:52:23.990 回答