2013-06-19 15 views
7

PHPスクリプト<?=str_replace(array('(',')','-',' ','.'), "", $rs["hq_tel"])?>これは、文字配列を取り、文字列中の文字があれば置換する文字列置換関数です。関数のJava同等のものはありますか?私はいくつかの方法を見つけましたが、ループやいくつかのステートメントを繰り返して使用していますが、Javaのような単一行のソリューションは見つかりませんでした。Javaの文字列から複数の文字を置換する

ありがとうございます。

+0

私はこれを行うための単一の行はJavaで箱から出してサポートされていることを信じています。しかし、あなたはこれを行う関数を自由に書くことができます。次に、同様の方法でそれを呼び出すことができます。ありがとうございました。 – midhunhk

+0

'String'クラスに対して' replaceAll'を使用して、置き換える文字列と一致する適切な正規表現を与えます。 – cmbaxter

答えて

13

次のような正規表現を使用することができます

//char1, char2 will be replaced by the replacement String. You can add more characters if you want! 
String.replaceAll("[char1char2]", "replacement"); 

最初のパラメータはregexで、2番目のパラメータがreplacementです。

特殊文字をエスケープする方法については、docsを参照してください(必要な場合に備えて!)。

+0

これはコンマ(、)で区切られたリストですか? – NoNaMe

+0

@zzzz試してみてください。 – Maroun

2

String.replaceAll(String regex, String replacement)

11

あなたのソリューションはここ..です

あなたはあなたができる正規表現について知らない場合は、特定の特殊文字

str.replaceAll("[()?:!.,;{}]+", " "); 
1

を交換して、すべての特殊文字

str.replaceAll("[^\\dA-Za-z ]", ""); 

を交換してくださいもっと精巧なものを使用してください:

private static ArrayList<Character> special = new ArrayList<Character>(Arrays.asList('(', ')', '-', ' ', '.')); 

public static void main(String[] args) { 
    String test = "Hello(how-are.you ?"; 
    String outputText = ""; 

    for (int i = 0; i < test.length(); i++) { 
     Character c = new Character(test.charAt(i)); 
     if (!special.contains(c)) 
      outputText += c; 
     else 
      outputText += ""; 
    } 

    System.out.println(outputText); 
} 

出力: Hellohowareyou?

EDIT(ループなしではなく正規表現で):

public static void main(String[] args) { 
    String test = "Hello(how-are.you ?)"; 
    String outputText = test.replaceAll("[()-. ]+", ""); 

    System.out.println(outputText); 
} 
+0

しかし、私はループ愛する人を使用したくない。 – NoNaMe

+0

@zzzz。申し訳ありませんが、私はno loopオプションを読んでいませんでした! **あなただけの**残りのような正規表現を使用してあなたの配列で持っていた文字を** **を置き換えるために編集コメントはコメントしました。 – maqjav

関連する問題