基于符号拆分字符串

时间:2011-12-15 22:10:31

标签: javascript jquery

我正在尝试根据第二次出现的符号_

将字符串拆分为数组
var string = "this_is_my_string";

我想在第二个下划线后拆分字符串。字符串并不总是相同,但它总是有2个或更多下划线。我总是需要将它拆分为第二个下划线。

在上面的示例字符串中,我需要像这样拆分它。

var split = [this_is, _my_string];

4 个答案:

答案 0 :(得分:7)

var string = "this_is_my_string";
var firstUnderscore = string.indexOf('_');
var secondUnderscore = string.indexOf('_', firstUnderscore + 1);
var split = [string.substring(0, secondUnderscore),
             string.substring(secondUnderscore)];

将其粘贴到浏览器的控制台中进行试用。不需要jsFiddle。

答案 1 :(得分:2)

var str = "this_is_my_string";

var matches = str.match(/(.*?_.*?)(_.*)/); // MAGIC HAPPENS HERE

var firstPart = matches[1];  // this_is
var secondPart = matches[2]; // _my_string

这使用regular expressions来查找前两个下划线,并捕获到它的部分以及它之后的部分。第一个子表达式(.*?_.*?)表示“任意数量的字符,下划线,以及任意数量的字符,保持匹配的字符数尽可能小,并捕获它”。第二个,(_.*)表示“匹配下划线,然后匹配任意数量的字符,尽可能多地捕捉它”。 match函数的结果是一个以完全匹配区域开头的数组,后跟两个捕获的组。

答案 2 :(得分:2)

var string = "this_is_my_string"; 
var splitChar = string.indexOf('_', string.indexOf('_') + 1);

var result = [string.substring(0, splitChar),
string.substring(splitChar, string.length)];

这应该有用。

答案 3 :(得分:1)

我知道这篇文章很老了......但是不禁注意到没有人提供有效的解决方案。这是一个有效的方法:

    String str = "this_is_my_string";
    String undScore1 = str.split("_")[0];
    String undScore2 = str.split("_")[1];
    String bothUndScores = undScore1 + "_" + undScore2 + "_";
    String allElse = str.split(bothUndScores)[1];
    System.out.println(allElse);

假设您知道总会有至少2个下划线 - “allElse”会在第二次出现后返回所有内容。