2017-02-22 10 views
-4

#USERはWORD1 WORD2 ユーザー "Javaの正規表現は、特定の文字列パターンを置き換えるために、私は同じ単語(省略#)</p> <p>例</p> <p>「単語1 WORD2での単語のセットを含む文字列に#で始まる単語を置き換えたい

」に置き換えるべき" 誰かが私を助けることができますか?

+0

は '#のuser'様または' #USER #word #anotherWord ... 'のようなあなたの文字列に何かありますか? – SantiBailors

+0

文字列に添付された#を削除したいだけですか? – sadlyblue

答えて

5

あなたは正規表現を使用することができます。

  • \S一つ以上の
  • \S+一つ以上の非空白文字
  • を表しを表し
  • +任意の非空白文字を表します:正規表現で

    yourText = yourText.replaceAll("#(\\S+)", "$1"); 
    

    で始めることができます

  • (\S+) - かっこの作成グループcontaini一つ以上の非空白文字をngの、このグループは、交換に1

として索引付けされます交換で

  • $1は、私たちは他ではグループ1

のコンテンツを使用することができますそれは#non-whitespaces(これはnon-whitespaces部分で置き換えられます)を検索しようとします。

しかし、この解決策では、単語の先頭に#は必要ありません。これを行うために、我々は#

  • 空白スペース\s、文字列^
  • または開始があるかどうかを確認できます。

実際に私たちの試合に何も含まれていないかどうかをテストするには、裏返し(?<=...)を使用できます。

だから、私たちの最終的な解決策は

yourText = yourText.replaceAll("(?<=^|\\s)#(\\S+)", "$1"); 
+1

。ありがとう。 –

+1

@IsurangaPerera 1つの問題を解決するためにこの回答を更新しました。更新版を確認してください。 – Pshemo

0

はい、String.replaceAll()

String foo = "#user" 
foo = foo.replaceAll("#", ""); 
+2

これは、それらがどこにあるかにかかわらずすべての '#'を削除します。 – Pshemo

+1

@IsurangaPerera 'replace'は、検索されたテキストのすべての*出現を置き換えます。 'replace'と' replaceAll'の違いは、 'replaceAll'が正規表現の構文を使用しているのに対し、' replace'はリテラルを使用していることだけです。 – Pshemo

+0

@Pshemoは完全に喜んでそれを忘れていただきありがとうございます –

0

のように見えることができますあなたは非常に明確なユースケースを持っていないが、コードの例と私の仮定:

  1. でReplaceAll機能
  2. 持つすべてのシンボルを省略

    最初のシンボルはの部分文字列を除きます function

    パブリッククラスTestRegex {

    public static void main(String[] args) { 
    
        String omitInStart = "#user"; 
        String omitInMiddle = "#user"; 
        String omitInEnd = "#user"; 
        String omitFewSymbols = "#us#er"; 
    
        List<String> listForOmit = Arrays.asList(omitInStart, omitInMiddle, omitInEnd, omitFewSymbols); 
        listForOmit.forEach(e -> System.out.println(omitWithReplace(e))); 
    
        listForOmit.forEach(e -> System.out.println(omitFirstSymbol(e))); 
    
    } 
    
    private static String omitFirstSymbol(String stringForOmit) { 
        return stringForOmit.substring(1); 
    } 
    
    private static String omitWithReplace(String stringForOmit) { 
        String symbolForOmit = "#"; 
        return stringForOmit.replaceAll(symbolForOmit, ""); 
    } 
    

    }

関連する問題