2017-07-15 30 views
-3

私はから「シカゴ/ロンドン/パリ」、「ロンドン/パリ」、「プラハ/ロンドン」や「ロンドン」を作るために私がでReplaceAll関数の中で使用する必要があります正規表現のJavaJavaの文字列から重複文字を削除するにはどうすればよいですか?

String s1 = "Chicago/London/London/London/Paris"; 
String s2 = "London/London/London/Paris"; 
String s3 = "Prague/London/London/London"; 
String s4 = "London/London"; 

でこれらの文字列を持っていますこれらの文字列?ありがとうございました

+5

をあなたは何をして試してみましたか?そして、正規表現がこれのための正しいツールだと思うのはなぜですか? – UnholySheep

+0

Java Stringはそれを保存する最良の方法ではありません。 1つの考えはそれを分割してSetに入れ、重複を自動的に排除し、本当にこれをStringとして必要とする場合は、 '/'を使用して再度結合することです。 –

+0

新しいArrayList <>(新しいHashSet <>(Arrays.asList(s1.split( "/")))) – ronhash

答えて

2

あなたはこれを自分で処理する必要があります。 EDIT:@ UnholySheepのコメントに従って最適化されました。 編集:@ Pshemoのコメントの後に、両方のJava 7/8のバージョンが改善されました。

public String removeDubs(String input) { 
    String[] parts = input.split("/"); 
    Set<String> unique = new LinkedHashSet<>(Arrays.asList(parts)); 
    return String.join("/", unique); 
} 

EDIT:あなたは、Java 8を使用している場合かを:

public String removeDubsV8(String input) { 
    return Arrays.stream(input.split("/")) 
      .distinct() 
      .collect(Collectors.joining("/")); 
} 
+1

'StringBuilder'(と' substring')の使用法は不要です。代わりに 'String.join("/"、unique);' – UnholySheep

関連する問題