2017-10-24 7 views
-1

アストストロフィ後の迷惑な空白を削除する方法と、match()で正規表現を適用した後にピリオド/ 結果は "不要な"スペースのない文字列にする必要があります。 ありがとうございました。match()でregexを適用した後にJavaScriptが空白を削除します。

var text = "There’s no doubt these days."; 
var r = text.match(/\w+|[^'\s\w]+/g); 
var j = r.join(" "); 
console.log(j); 

// the result: There ’ s no doubt lives these days . 
// should be: There’s no doubt lives these days. 
+0

代わり.replaceで1と複数のスペースを置き換える;:あなたは、あなたに正規表現を変更することができますいずれか – roland

+3

これはX Yの問題のようです。あなたは何をしようとしているのですか? – Toto

+2

「生きる」という言葉がそこにいかにあるのか、本当に驚くべきことです。 – trincot

答えて

2

使用String.prototype.replace()

var text = "There’s no doubt these days."; 
 
var r = text.match(/\w+|[^'\s\w]+/g); 
 
var j = r.join(" ") 
 
    .replace(" ’ ", "’") 
 
    .replace(" .", "."); 
 
console.log(j);

+0

ありがとうShreevardhan、それは動作し、それは行います。しかし、もっと "すべてに適用される"解決策はありませんか?ありがとうございました。 – user1627930

+0

@ user1627930 ** all ** to ** solutionに適用するには、正規表現を書き換えて、空白に囲まれていない可能性のあるすべての文字を無視するか、ユースケースを洗練する必要があります。 – Shreevardhan

+0

私はそれを(正規表現を操作するために)しようとしましたが失敗しました。私は自分の必要性を満たすパターンを見つけられませんでした。 – user1627930

0

私はあなたが単語の間に複数のスペースを取り除くが、そのまま句読点を残して取得したいと?あなたがtext.split(」「)を使用することができ、

var r = text.match(/\S+/g); 

それとも

var text = "There’s no doubt   these days."; 
text = text.replace(/\s+/g, " "); 

console.log(text); 
関連する問題