2011-12-07 15 views
1

行内の複数の空白を1つの空白に置き換える必要があります。これを行うには、以下のコードを使用します。しかし、2つの単語の中の1つの単語がハイフン「 - 」のときは機能しません。それらの単語のうちの1つがハイフン ' - 'であれば、行内の複数の空白を1つの空白に置き換える方法を教えてください。ダッシュ-と空間との間に何のものがありませんので単語間の複数の空白を1つの空白に置き換えます。

String s="1 2 1 2 1 2 1 2 1 2 1  2 1 2 1 2 1 2 1 2 1 2 1 2" 

s.replaceAll("\\b\\s{2,}\\b", " "); 

おかげ

+3

あなたはそうではないもののよりよい例を投稿することができますお願いしますか? –

+0

もし私が5単語の行を持っていたら、その行の2つの連続した単語の間の複数の空白が1つの空白に縮小されていることを確認したい。しかし、行の2つの連続した単語の中の1つの単語がハイフン ' - 'であれば、上記のコードは機能しません。あなたはこれをJavaで実現する方法を教えてもらえますか? –

+0

投稿を参照してください:http://stackoverflow.com/questions/575500/java-regex-reduce-spaces-in-a-string – Drona

答えて

1

は、ワード境界\\bを削除します。

4

あなたが簡単に使用できます。

String s = "1 - 2 2" 
s.replaceAll("\\s{2,}", " "); 

ができます: "1 - 2 2"

単に

またはそれ以上を:

s.replaceAll("\\s+", " "); 
+0

[OMG Ponies](http://msmvps.com/blogs/jon_skeet/archive/2009/11/02/omg-ponies-aka-humanity-epic-fail.aspx)「ゼロ幅非結合子」を参照してください。また、http://ideone.com/bps9d – Stefan

+0

をチェックしてください。s.replaceAll( "\\ s {2、}"、 "")がうまくいきました。みんな、ありがとう。 –

関連する問題