2017-03-06 104 views
0

我无法在JavaScript中格式化字符串。理想情况下,我想分割它,但只是更换控制角色将是一种奖励。该字符串包含多个控制字符,我可以使用它们来进行拆分或替换,但无法获得正确的正则表达式。javascript - 使用正则表达式分割多个控制字符的字符串

用于分割字符串/取而代之的是(十六进制)0A 20 0A 20

我试图此

tidy_summary = tidy_summary.replace(/[\x0a \x20 \x0a \x20 ]/g,'~'); 

tidy_summary = tidy_summary.replace(/[\x0a|\x20\x0a|\x20]/g,'~'); 

但它返回多个“〜 '

我想用一个替换四个字符的序列。

任何帮助appraciated

+1

在字符类'replace(/ [\ x0a | \ x20 \ x0a | \ x20] +/g,'〜');' – Tushar

+0

'上加''''量词对不起,请提供一个确切的样例字符串作为一个字符串文字)和预期的输出?它是'“\ x0a \ x20 \ x0a \ x20”'?然后使用'.replace(/(?:\ x0a \ x20){2}/g,'〜')' –

回答

1

你的正则表达式同时匹配单个字符,字符的不是一个序列。

[\x0a \x20 \x0a \x20 ]正则表达式匹配1个字符,它是换行符或空格。 [\x0a|\x20\x0a|\x20]模式匹配1个字符,它可以是换行符,空格或|符号(因为字符类中的替换运算符与文字管道符号相匹配)。

要匹配字符的序列,去掉不必要的空间/管和字符类[]

var tidy_summary = "Line 1\x0a\x20\x0a\x20Record 2"; 
 
console.log(tidy_summary.replace(/\x0a\x20\x0a\x20/g,'~')); 
 
// or a bit shorter with a limiting quantifier: 
 
console.log(tidy_summary.replace(/(?:\x0a\x20){2}/g,'~'));

随着(?:\x0a\x20){2}图案,双(由于{2}限制量词)换行符和空格序列((?:\x0a\x20))相匹配。 (?:...)是一个非捕获组,用于将符号分组为序列

+1

非常感谢您的解释。我现在添加您的代码。 – Malcolmf

相关问题