16

私は以下の文字列を持っています

  string = "Book Your Domain And Get\n \n\n \n \n \n Online Today."
  string = str.replace("\\s","").trim();

どちらが戻る

  str = "Book Your Domain And Get     Online Today."

しかし、欲しいのは

  str = "Book Your Domain And Get Online Today."

多くの正規表現を試してみましたが、グーグルでも検索しましたが、うまくいきませんでした。関連する質問が見つかりませんでした。助けてください。よろしくお願いします。

4

8 に答える 8

49

入力に ​​2 つ以上の連続した空白があるため、\\s+代わりに使用します。\\s

string = str.replaceAll("\\s+"," ")
于 2013-09-18T11:00:20.893 に答える
13

replaceAllパラメータとして正規表現を取る which を使用できます。そして、複数のスペースを単一のスペースに置き換えたいようです。次のように実行できます。

string = str.replaceAll("\\s{2,}"," ");

2 つ以上の連続する空白を 1 つの空白に置き換えます。

于 2013-09-18T11:00:24.850 に答える
3

最初に複数のスペースを取り除きます:

String after = before.trim().replaceAll(" +", " ");
于 2013-09-18T11:10:10.430 に答える
0

文字列の末尾ではなく、2 つの単語または文字の間の空白を削除するだけの場合は、使用した正規表現を次に示します。

        String s = "   N    OR  15  2    ";

    Pattern pattern = Pattern.compile("[a-zA-Z0-9]\\s+[a-zA-Z0-9]", Pattern.CASE_INSENSITIVE); 

    Matcher m = pattern.matcher(s);

        while(m.find()){
        String replacestr = "";


        int i = m.start();
            while(i<m.end()){
                replacestr = replacestr + s.charAt(i);
                i++;
            }

            m = pattern.matcher(s);
        }

        System.out.println(s);

末尾のスペースではなく、文字または単語間のスペースのみを削除し、出力は

NOR152

于 2019-08-07T08:20:56.843 に答える