Javascript - 用白色 space 拆分字符串并用“|”连接两个单词
Javascript - Split string by white space and join two words by "|"
我觉得这很简单,但我想不出来。
var str = "How are you doing today?";
var res = str.split(/\s+/g);
结果将是:How,are,you,doing,today?
。当用户添加字符“|”在这样的两个词之间
var str = "How are you |doing today?";
结果应该是:How,are,you doing,today?
试试这个:
var source = "How are you |doing today?";
var result = source
.split(/\s+(?!\|)/g)
.map(function(segment) {
return segment.replace(/((\s+)\|)/g, '');
});
console.log(result);
首先,字符串 split
到 后面没有 管道字符 (|
) 的空白序列,使用 负数lookahead,然后生成的数组被映射,例如每个段的空白序列后跟管道字符仅替换为每个匹配组(</code>)的空白部分(<code>
) ).
如果 Array.map
没有在 Extendscript 中实现,这里是另一个使用常规 for
循环的例子:
var source = "How are you |doing today?";
var rawArray = source.split(/\s+(?!\|)/g);
var result = [];
for (var i = 0; i < rawArray.length; i++) {
result[i] = rawArray[i].replace(/((\s+)\|)/g, '');
}
console.log(result);
您无法做到您所描述的只是 split
。您可以使用否定先行断言 (/ (?!\|)/
) 来关闭,但它会在字符串中留下 |
:
var str = "How are you |doing today?";
var arr = str.split(/ (?!\|)/);
console.log(arr);
...所以我们必须做更多。可能最简单的方法是在拆分后用 space 替换 space-plus-bar:
var str = "How are you |doing today?";
var arr = str.split(/ (?!\|)/).map(function(s) {
return s.replace(/ \|/g, ' ');
});
console.log(arr);
或在 ES2015+ 中:
const str = "How are you |doing today?";
const arr = str.split(/ (?!\|)/).map(s => s.replace(/ \|/g, ' '));
console.log(arr);
首先用管道替换所有白色 space。然后每次遇到两个或更多管道时用白色 space 替换。然后按管道拆分:
var str = `How are you |doing today?
fine | thanx`;
var arr = str.replace(/ {1,}/g,"|").replace(/\|{2,}/g," ").split(/\||\n/);
console.log(arr);
我觉得这很简单,但我想不出来。
var str = "How are you doing today?";
var res = str.split(/\s+/g);
结果将是:How,are,you,doing,today?
。当用户添加字符“|”在这样的两个词之间
var str = "How are you |doing today?";
结果应该是:How,are,you doing,today?
试试这个:
var source = "How are you |doing today?";
var result = source
.split(/\s+(?!\|)/g)
.map(function(segment) {
return segment.replace(/((\s+)\|)/g, '');
});
console.log(result);
首先,字符串 split
到 后面没有 管道字符 (|
) 的空白序列,使用 负数lookahead,然后生成的数组被映射,例如每个段的空白序列后跟管道字符仅替换为每个匹配组(</code>)的空白部分(<code>
) ).
如果 Array.map
没有在 Extendscript 中实现,这里是另一个使用常规 for
循环的例子:
var source = "How are you |doing today?";
var rawArray = source.split(/\s+(?!\|)/g);
var result = [];
for (var i = 0; i < rawArray.length; i++) {
result[i] = rawArray[i].replace(/((\s+)\|)/g, '');
}
console.log(result);
您无法做到您所描述的只是 split
。您可以使用否定先行断言 (/ (?!\|)/
) 来关闭,但它会在字符串中留下 |
:
var str = "How are you |doing today?";
var arr = str.split(/ (?!\|)/);
console.log(arr);
...所以我们必须做更多。可能最简单的方法是在拆分后用 space 替换 space-plus-bar:
var str = "How are you |doing today?";
var arr = str.split(/ (?!\|)/).map(function(s) {
return s.replace(/ \|/g, ' ');
});
console.log(arr);
或在 ES2015+ 中:
const str = "How are you |doing today?";
const arr = str.split(/ (?!\|)/).map(s => s.replace(/ \|/g, ' '));
console.log(arr);
首先用管道替换所有白色 space。然后每次遇到两个或更多管道时用白色 space 替换。然后按管道拆分:
var str = `How are you |doing today?
fine | thanx`;
var arr = str.replace(/ {1,}/g,"|").replace(/\|{2,}/g," ").split(/\||\n/);
console.log(arr);