2017-03-06 101 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

相關問題