我想要将一个字符串根据第二个出现的符号_
拆分成数组。
var string = "this_is_my_string";
我想在第二个下划线后拆分字符串。字符串不总是相同的,但它总是有2个或更多的下划线。我总是需要在第二个下划线上拆分。
在上面的示例字符串中,我需要按以下方式拆分。
var split = [this_is, _my_string];
我想要将一个字符串根据第二个出现的符号_
拆分成数组。
var string = "this_is_my_string";
我想在第二个下划线后拆分字符串。字符串不总是相同的,但它总是有2个或更多的下划线。我总是需要在第二个下划线上拆分。
在上面的示例字符串中,我需要按以下方式拆分。
var split = [this_is, _my_string];
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)];
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
这个使用正则表达式来查找前两个下划线,并捕获它之前和之后的部分。第一个子表达式(.*?_.*?)
表示“任意数量的字符、下划线,再次任意数量的字符,尽可能匹配少的字符,并捕获它”。第二个子表达式(_.*)
表示“匹配一个下划线,然后任意数量的字符,尽可能多地匹配它们,并捕获它”。match
函数的结果是一个数组,以完整匹配的区域开头,后面跟着两个捕获的组。
var string = "this_is_my_string";
var splitChar = string.indexOf('_', string.indexOf('_') + 1);
var result = [string.substring(0, splitChar),
string.substring(splitChar, string.length)];
这应该可以正常工作。
我知道这篇帖子很旧了...但是我忍不住注意到没有人提供一个可行的解决方案。这里有一个可行的解决方案:
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"返回第二次出现后的所有内容。
a_b_c_d_e_f = [a_b,c_d,e_f]
的解决方案呢? - Ash Burlaczenko