无论字符串中出现的吐出字符数是多少,Javascript都会拆分为2个部分

时间:2012-06-22 07:01:25

标签: javascript

我想使用分割功能将Javascript中的字符串分成两部分。

例如我有字符串:

str='123&345&678&910'

如果我使用javascripts split,它将它分成4部分。 但是我只需考虑第一个'&'就需要它分为两个部分。它遇到了什么。

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

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

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

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

我希望秒为:

sec=345&678&910

我如何在Javascript中完成。

6 个答案:

答案 0 :(得分:6)

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

查看其他答案的类似问题:

split string only on first instance of specified character

答案 1 :(得分:4)

您可以使用match代替split

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

输出:

["123", "345&678&910"]

答案 2 :(得分: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"

答案 3 :(得分: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个元素的数组(在拆分之前和之后的所有内容)

<强> Demo

答案 4 :(得分: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 ):[]
               );
}

答案 5 :(得分: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]的索引推荐的原因,但是,如果没有获得索引,它仍然可以根据需要工作,即{ {1}}。

随意更换&#34;&amp;&#34;使用您需要拆分的字符串。

希望这有帮助:)