我正在尝试根据第二次出现的符号_
var string = "this_is_my_string";
我想在第二个下划线后拆分字符串。字符串并不总是相同,但它总是有2个或更多下划线。我总是需要将它拆分为第二个下划线。
在上面的示例字符串中,我需要像这样拆分它。
var split = [this_is, _my_string];
答案 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”会在第二次出现后返回所有内容。