2016-06-13 9 views
-3

im Versuch, den String zu lesen, ersetzen dann alle Wörter mit Großbuchstaben mit „Marklar“ Es sollte wie folgt aussehen:ersetzen Substantive mit „Marklar“

> Hello 
< Marklar 

Scanner scanner = new Scanner(System.in); 

String input = scanner.nextLine(); 
input=input.replaceAll("\\b[A-Z]\\b", "Marklar"); 

System.out.println(input); 

Dies funktioniert nicht .. Wer hat eine Idee?

+1

Ich habe eine Idee: Ihr regulärer Ausdruck nicht Worte überein mit Ausnahme Großbuchstaben mit einem Buchstaben. – zapl

Antwort

2

Sie ersetzen derzeit nur einzelne, isolierte Großbuchstaben. Fügen Sie einen Quantifizierer ein oder mehrere zum Spiel:

"\\b[A-Z]+\\b" 
     ^"one or more" 

und erweitern Sie die Zeichenklasse, wenn Sie zu Kleinbuchstaben übereinstimmen soll:

"\\b[A-Za-z]+\\b" 
+0

Ich versuche, das ganze Nomen wie "Hallo" mit "Marklar" zu ersetzen, es scheint, als könnte ich das Wort selbst nicht erreichen. Wenn die Regex nur '[A-Z]' ist, bekomme ich "Marklarello" statt nur Marklar, was ich will. – HappyCode

+0

Die Zeichenklasse '[A-Z]' passt nur auf Großbuchstaben. Wenn Sie auch Kleinbuchstaben suchen möchten, versuchen Sie '[A-Za-z]'. –

+0

oder. '" \\ b [A-Z] [a-z] * \\ b "' bedeutet genau 1 Großbuchstabe gefolgt von einer beliebigen Anzahl von Kleinbuchstaben oder "Jedes Großbuchstaben-Wort" – zapl