如何在 JavaScript 中拆分此字符串
How can I split this string in JavaScript?
我有这样的字符串:
ab
rx'
wq''
pok'''
oyu,
mi,,,,
基本上,我想将字符串分成两部分。第一部分应具有完整的字母字符,第二部分应具有非字母字符。字母部分保证在 a 和 z 之间为 2-3 个小写字符;非字母部分可以是任何长度,并且保证只是,
或'
字符,但不能同时是一个字符串中的字符(例如 eex,',
永远不会发生)。
所以结果应该是:
[ab][]
[rx][']
[wq]['']
[pok][''']
[oyu][,]
[mi][,,,,]
我该怎么做?我猜的是正则表达式,但我不是特别擅长想出它们。
正则表达式有一个很好的特殊名称,称为"单词边界"('b
)。你可以用它来检测一个单词的边界,这是一个字母数字字符序列。
所以你所要做的就是
foo.split(/'b/)
例如
"pok'''".split(/'b/) // ["pok", "'''"]
如果你能100%保证:
- 字母字符串为 2 或 3 个字符
- 总是有一个或多个素数/逗号
- 在字母和标记
之前、之后或之间没有任何空白(换行符除外)
您可以使用:
/^([a-zA-Z]{2,3})('+|,+)$/gm
var arr = /^([a-zA-Z]{2,3})('+|,+)$/gm.exec("pok'''");
arr === ["pok'''", "pok", "'''"];
var arr = /^([a-zA-Z]{2,3})('+|,+)$/gm.exec("baf,,,");
arr === ["baf,,,", "baf", ",,,"];
当然,为自己节省一些理智,并将该正则表达式保存为变量。
作为警告,如果您还没有像这样处理正则表达式:如果找不到匹配项 - 如果您尝试通过混合标记来匹配foo',''
,或者您有 0-1 或 4+ 字母,或 0 标记......然后,您不会返回数组,而是会得到null
.
所以你可以这样做:
var reg = /^([a-zA-Z]{2,3})('+|,+)$/gm,
string = "foobar'',,''",
result_array = reg.exec(string) || [string];
在这种情况下,exec 的结果为 null;通过将 ||(或者)在那里,我们可以返回一个包含原始字符串的数组,作为 index-0。
为什么?
因为一个成功的执行的结果将有3个插槽; [*string*, *letters*, *marks*]
.您可能会想像result_array[1]
一样阅读字母。但是如果比赛失败并result_array === null
,那么 JavaScript 会因为你尝试null[1]
而尖叫。
因此,在失败的exec末尾返回数组将允许您获得result_array[1] === undefined
(即:与模式不匹配,因此index-1中没有字母),而不是JS错误。
你可以尝试这样的事情:
function splitString(string){
var match1 = null;
var match2 = null;
var stringArray = new Array();
match1 = string.indexOf(',');
match2 = string.indexOf('`');
if(match1 != 0){
stringArray = [string.slice(0,match1-1),string.slice(match1,string.length-1];
}
else if(match2 != 0){
stringArray = [string.slice(0,match2-1),string.slice(match2,string.length-1];
}
else{
stringArray = [string];
}
}
var str = "mi,,,,";
var idx = str.search(/'W/);
if(idx) {
var list = [str.slice(0, idx), str.slice(idx)]
}
您将拥有list[0]
和list[1]
中的零件。
附言可能有一些比这更好的方法。
yourStr.match(/(''w{2,3})([,']*)/)
if (match = string.match(/^([a-z]{2,3})(,+?$|'+?$)/)) {
match = match.slice(1);
}
- 通过跳过拆分字符在 javascript 中拆分字符串
- jQuery字符串使用split()方法在空格后拆分字符串
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何在JavaScript中按大小写拆分字符串
- 根据上次出现的、和_拆分字符串
- 拆分字符串数组(JavaScript)后未定义
- 在空行上拆分字符串
- 使用Regex拆分字符串,保留分隔符
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- Nashorn和Rhino:使用空白regexp拆分字符串
- Javascript:不使用.split()方法拆分字符串
- 如何使用正则表达式在javascript中拆分字符串
- Javascript在第一个空格上拆分字符串
- 首次出现时拆分字符串
- 如何使用正则表达式(.match())拆分字符串
- 使用正则表达式拆分字符串
- Javascript:拆分字符串,但仅使用 1 个结果
- Angularjs-拆分字符串问题
- angularjs在拆分字符串时解析语法错误
- 基于javascript中的AND OR逻辑拆分字符串