RikuMoto
@RikuMoto (Riku Moto)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

\t空白の除去

解決したいこと

文字列中に全角、半角、タブ(\t)の空白があれば除去するメソッドを実装したのですが、全角、半角の空白は除去できたのですが、\tのタブは除去できません。
各、webの記事を確認したのですが見当たりませんでした。
ご教授お願いいたします。

発生している問題・エラー

jokyo.java
	//空白除去
	public static String kuuhaku_trm(String tmp) {
		 String num = tmp.replaceAll(" +|\\s+|", "");
		 return num;
	}

現状 ↓
入力:テスト\tテスト
出力:テスト テスト

0

1Answer

動作確認してみたけど、除去できていますよ。
もしかして、動作確認プログラムでも \\t と書いていたりしませんか?
文字コードはunicodeでしょうか?

    public static void main(String[] args) {
        System.out.println(kuuhaku_trm("\t\tテ ス  ト\tテ    ス    ト"));
    }
実行結果
テストテスト

こんな書き方でもいけます。

String num = tmp.replaceAll("[\\s ]+", "");
1Like

Comments

  1. @RikuMoto

    Questioner

    回答ありがとうございます!
    入力は\tで入力しています。

    文字コードはUTF-8です!

    私の環境試したのですが、どうしても半角スペース一個分空白が残ってしまいます...
  2. 実行しているjavaのバージョンはいくですか?
    タブではなく半角スペース1個分残るということは、replaceAllの第二引数がスペース1個になっていませんか?
    私が試してみた "\t\tテ ス  ト\tテ   ス   ト" を変換してみると結果はどうなりますか?
  3. @RikuMoto

    Questioner

    javaのバージョンは8になります。
    環境はeclipseで実行して表示させています。

    "\t\tテ ス  ト\tテ   ス   ト"こちらの結果ですが、
    テスト テスト
    になりました。
  4. うーん、なんでだろう・・・
    コンパイルしなおしてますよね?
    日本語文字列がいけないのかな?
    "test\ttest" で試すとどうですか?
  5. @RikuMoto

    Questioner

    回答ありがとうございます。
    なんども再起動、コンパイル行っているのですが、空白除去できません。。

    test\ttestで入力したら
    test test
    やはり空白除去できません(泣)
  6. String num = tmp.replaceAll(" +|\\s+|", "x");
    にしたら testxtest になりますか?
  7. @RikuMoto

    Questioner

    xtxexsxtx\\xtxtxexsxtx
    このようになりました。
  8. \\ があるということは、引数に渡した文字列にも \\ があるのでは?
    replaceAllの第一引数の文字列の最後の | が何か悪さしているのかな?
    String num = tmp.replaceAll("[\\s ]+", ""); ではどうなりますか?
  9. @RikuMoto

    Questioner

    上記試してみましたが、やはりスペース空いてしまいます...
  10. となると、ユニコード文字をうまく扱えないバグがJava8にありそうですね。
  11. @RikuMoto

    Questioner

    こちら解決?しました。
    \tこれで入力すると通ってしまいますが
    テキストエディタでTabキーを押して出たスペースをコピペして貼り付けると正規表現に引っかかりました。
    解決ではないかもしれませんが、ご対応下さりありがとうございました!!

Your answer might help someone💌