2017-09-18 3 views
0

* Edit 2, "nicht deklarierte Variable" Das folgende ist das Beispiel, dass mein Lehrbuch bietet. Ich habe vielleicht falsche Ausdrücke benutzt, um nicht deklarierte Variable zu sagen.Formatieren Benutzer Eingabe mit bestimmten char an bestimmten Punkt in Java

  • Zeichenfolge fName = "Harry";
  • Zeichenfolge lName = "Morgan";
  • Zeichenfolge name = fName + lName;
  • Ergebnisse in der Zeichenfolge "HarryMorgan"
  • Was ist, wenn Sie den Vor- und Nachnamen getrennt durch ein Leerzeichen möchten? Kein Problem:
  • String name = fName + "" + lName;
  • Diese Anweisung verkettet drei Strings:
  • fName, das String-Literal "" und lName.
  • Das Ergebnis ist "Harry Morgan"

Das Zitat eine Richtlinie vorgesehen ist. Bitte überprüfen Sie jedes Zitat vor der Verwendung auf Genauigkeit.

* Bearbeiten, Frage ist: Wie füge ich Zeichen in eine nicht deklarierte Zeichenfolge ein?

Beispiel:

Input: X839WS21R4E877 
Display: X-839 WS21 R4-E87 (7) 

Input: x83rws21b3e87a 
Display: X-83R WS21 B3-E87 (A) 

Ich bin eine 14 Zeichen-Eingabe von dem Benutzer nehmen. Ich muss in Leerzeichen und "-" in die Eingabe formatieren. Auch alle Buchstaben müssen großgeschrieben werden, obwohl ich das bereits erledigt habe.

Der folgende Code ist, was ich habe.

System.out.println("Please enter your 14 character code."); 
    String name = input.nextLine(); 

    if (name.length()>14) {//code thanks to namlik from stackoverflow 
     String cutName = name.substring(0, 14).toUpperCase(); 
     name = cutName; 
    } 

    System.out.print(name); 

Hier ist ein weiterer Beitrag ich mir arbeiten könnte das Gefühl gefunden, aber ich verstehe nicht, wie es in meinen Code zu implementieren, oder ob es funktionieren würde. Basic way to insert character into string.

Der folgende Link ist zu einer anderen ähnlichen Frage. Python vs of Question

Dieser Link ist, was kam, als ich versuchte, eine Suche zu tun, aber ich verwende nicht Int zu string, so glaube ich nicht, dass es relevant ist. Example of search results

Ich glaube, mein Szenario würde anderen helfen, andere Typen von Zeichen in eine unbekannte Zeichenfolge einfügen zu können. Ich weiß, dass mit/Sie Sonderzeichen einfügen können. Alles, was ich bisher gefunden habe, verwendet die Annahme, dass Sie eine deklarierte Variable verwenden.

Ich glaube, ich muss die Zeichen, die ich wünsche Leerzeichen und "-" bei Set-Points mit der .substring (x, x) -Methode einfügen, aber ich bin mir nicht sicher, wie es geht, ohne mein Limit von nur versauen 14 Zeichen.

Vielen Dank im Voraus für Ihre Hilfe.

+0

Können wir ein paar Beispiel Eingangs- und Ausgangs Strings, um zu sehen, wo Möchtest du Charaktere hinzufügen/entfernen? –

+0

Sorry, aber was genau ist deine Frage? – Pshemo

+0

Was meinst du mit "undeclared string" – Pshemo

Antwort

0

Wenn ich Ihre Eingabe-Ausgabe Beispiel das richtig verstanden, dann ist die beste Art und Weise ist regex Gruppen und String::replaceAll wie folgt zu verwenden:

String[] strings = {"X839WS21R4E877", "x83rws21b3e87a"}; 
for(String str : strings){ 
    str = str.toUpperCase();// to convert the string to UpperCase 
    str = str.replaceAll("([A-Z0-9])([A-Z0-9]{3})([A-Z0-9]{4})([A-Z0-9]{2})([A-Z0-9]{3})([A-Z0-9])", 
      "$1-$2 $3 $4-$5 ($6)"); 

    System.out.println(str); 
} 

Ausgänge

X-839 WS21 R4-E87 (7) 
X-83R WS21 B3-E87 (A) 

Details

([A-Z0-9])([A-Z0-9]{3})([A-Z0-9]{4})([A-Z0-9]{2})([A-Z0-9]{3})([A-Z0-9]) 

Sie haben Ihre Eingaben Gruppen im previouse devide regew gibt es 6 Gruppen:

  • ([A-Z0-9]) groupe 1 Treffer ersten Buchstaben oder Zahlen
  • ([A-Z0-9]{3}) groupe 3 Ursachen 3 Buchstaben oder Zahlen
  • ([A-Z0-9]{4}) Gruppe 4 Treffer 4 Buchstaben oder Zahlen
  • ([A-Z0-9]{2}) groupe 2 Ursachen 2 Buchstaben oder Zahlen
  • ([A-Z0-9]{3}) groupe 3 Spiele 3 Buchstaben oder Zahlen
  • ([A-Z0-9]) groupe 6 Ursachen letzte Zeichen
+0

Ich verstehe nicht genau, wie das alles funktioniert, aber ich bin mir sicher, dass mein Lehrer helfen könnte, mich durch sie zu führen. Allerdings bekomme ich meine Eingabe per Scanner vom Benutzer. Also weiß ich nicht, was die Eingabe ist, wenn ich den Code schreibe. Hoffe das klärt für dich. – Everette

+0

@Everette können Sie 'String [] strings = {" X839WS21R4E877 "," x83rws21b3e87a "};' mit der Benutzereingabe das ist alles ich diese Lösung nur um die globale Logik zu verstehen –

+0

@Everette in Ihrem Fall können Sie 'if verwenden (name.length()> 14) { Zeichenfolge cutName = name.substring (0, 14) .toUpperCase(); name = cutName.replaceAll ("([A-Z0-9]) ([A-Z0-9] {3}) ([A-Z0-9] {4}) ([A-Z0-9] { 2}) ([A-Z0-9] {3}) ([A-Z0-9]) ", " $ 1- $ 2 $ 3 $ 4- $ 5 ($ 6) "); } 'das sollte dir helfen –

Verwandte Themen