2013-06-19 20 views
7

Bir PHP betiğim var <?=str_replace(array('(',')','-',' ','.'), "", $rs["hq_tel"])?> Bu, bir karakter dizisini alan ve dizede herhangi bir karakter arandığında bunları değiştiren bir dizgi değiştirme işlevidir. İşlevin java eşdeğeri var mı? Bazı yollar buldum ama bazıları döngü kullanıyor ve bazı ifadeleri yineliyorlar ama java'da böyle bir tek çözüm bulunamadı.Java'da bir dizgiden birden fazla karakter değiştirme

Şimdiden teşekkürler. İlk parametre regex ve ikinci parametre replacement olduğu

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

:

+0

Bunu yaptığın için tek bir satır Java kutunun dışında desteklenir inanıyoruz. Ancak bunu yapan bir işlev yazmakta özgürsünüz. Sonra onu çağırmak için benzer bir yol kullanabilirsiniz. Teşekkür ederim. – midhunhk

+0

Değiştirmek istediğiniz istediğiniz karakterlerle eşleşecek uygun bir regex veren 'String' sınıfındaki' replaceAll 'öğesini kullanın. – cmbaxter

cevap

13

Böyle bir normal ifadeler kullanabilirsiniz.

docs özel karakterlerden nasıl kurtulacağınıza bakın (gerekiyorsa!).

+0

Bu bir virgül (,) ayrılmış liste olacak mı? – NoNaMe

+0

@zzzz Deneyin ve bileceksiniz. – Maroun

2

String.replaceAll(String regex, String replacement)

11
çözüm burada

..

siz yapabilirsiniz regex hakkında bilmiyorsanız tüm özel karakter

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

değiştirin özgü özel karakter

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

değiştirin Daha ayrıntılı bir şey kullanın:

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); 
} 

Çıktı: Hellohowareyou?

DÜZENLEME (döngü olmadan ama regex ile):

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

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

ama bir döngü sevgili kullanmak istemiyorum. – NoNaMe

+0

@zzzz. Maalesef, no loop seçeneğini okumadım! Düzenleme dizininin geri kalanı gibi regex kullanarak dizininizde bulunan ** sadece ** ile değiştirildi. – maqjav

İlgili konular