Javascript Regex进行了拆分,但保留了部分分隔符
Javascript Regex split but keep part of delimiters
我有一个正则表达式,如果它找到NULL或',它会将字符串拆分为数组。
我的字符串是:
"'<xml↵ data>', NULL↵'abc', '<xml↵ data>'↵'abc', 'abc'"
(字符串的值用逗号分隔,除NULL值外,所有值都用单引号括起来。新行是用新行定义的,但我真正的问题是值也可以有新行。)
使用/NULL'n|''n/
,我得到这样的结果:
["'<xml↵ data>', ", "'abc', '<xml↵ data>", "'abc', 'abc'"]
但现在我想保留NULL和'部分分隔符(如果保留,我也可以)。所以它看起来是这样的:
["'<xml↵ data>', NULL", "'abc', '<xml↵ data>'", "'abc', 'abc'"]
到目前为止我的代码:
var data = "'<xml'n data>', NULL'n'abc', '<xml'n data>''n'abc', 'abc'"
var result = data.split(/NULL'n|''n/)
console.log(result)
非常感谢你的帮助。我现在也有类似的线程(比如这个),但我不擅长regex,所以在根据我的需求转换解决方案时没有成功。
编辑:工作解决方案(如果其他人需要)
根据@Michael Sanchez的回答,我创建了这个基于indexOf的工作函数(尽管从性能的角度来看我有点担心,因为在我的情况下,循环必须超过4MB的大文本):
现场演示:http://jsfiddle.net/ngr97jz7/3/
function ConvertToArray(text){
var rows = [];
var i = 1;
while(i != -1 && i != 0){
//find closer appearance
var a = text.indexOf("NULL'n");
var b = text.indexOf("''n");
i = ((a < b && a != -1) || (a > b && b == -1)) ? a+4 : b+1; //set index + 4 chars for NULL or 1 char for '
if(i == 0 || i == -1){
rows.push( text );
break;
}
rows.push( text.substring(0,i) );
text = text.substring(i+1, text.length)
}
return rows;
}
我能想到的一种方法是首先使用循环和.indexOf(<string>, <index>);
在整个字符串中找到分隔符的所有索引
创建另一个循环,使用之前检索到的索引获取主字符串的所需子字符串。你可以把它们添加到一个列表中,然后把它变成一个数组:
List<String> list = new ArrayList<String>();
// after list is populated
String[] arr = list.toArray(new String[list.size()]);
编辑:糟糕的是,你的问题出在javascript上。忽略列表步骤即可。
相关文章:
- 分派点击事件并保留击键修饰符
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 提交后保留下拉选择的值
- 刷新后保留对网页的更改
- Javascript和RegEx:拆分并保留分隔符
- 使用Regex拆分字符串,保留分隔符
- 在 JavaScript 中拆分字符串,但保留分隔符 /
- JavaScript 拆分正则表达式保留分隔符
- 如何在使用 regexp.split 时保留分隔符
- 在 JavaScript 中用多个分隔符拆分公式字符串,并保留分隔符,然后将字符串重新组合在一起
- 拆分字符串,但保留拆分数组中的分隔符
- 将字符串拆分为单词并保留分隔符
- 拆分字符串并保留分隔符
- Javascript Regex进行了拆分,但保留了部分分隔符
- 用多个分隔符分隔字符串,保留它们并在双引号中忽略它们
- 用多个分隔符拆分javascript中的字符串并保留它们
- 分析已知键的字符串正则表达式,但保留分隔符
- 拆分字符串并在 javascript 加条件中保留分隔符
- Ember.js隐藏带有按钮的分隔符,但保留didInsertElement功能
- 分割字符串并保留分隔符