[英]split string based on a symbol
我正在尝试根据符号_
的第二次出现将字符串拆分为数组
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)];
将其粘贴到浏览器的控制台中进行试用。 不需要jsFiddle。
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”会在第二次出现后返回所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.