/ / Eine Zahl basierend auf dem angegebenen Format formatieren - java, regex

Formatieren Sie eine Zahl basierend auf dem angegebenen Format - Java, Regex

Ich versuche, eine bestimmte Handynummer in ein bestimmtes Format zu formatieren. Die Nummer wird als einfache 10-stellige Nummer in der Datenbank gespeichert und in der Benutzeroberfläche angezeigt.

Ich verwende JSTL, um dies auf der JSP-Seite anzuzeigen.Ich hatte vor, eine benutzerdefinierte Funktion zu erstellen, die die Handynummer / Telefonnummer und das erforderliche Format akzeptiert und die Nummer im erforderlichen Format zurückgibt

(xxx) xxx-xxx xxx-xxx-xxx

Ich habe versucht, die angegebene Telefonnummer basierend auf dem RegExp aufzuteilen, aber ich bin mir nicht sicher, wie ich das tun soll

String phoneNumber="1232345678";
Pattern pattern=Pattern.compile("\d{3}\d{3}\d{4}");
String [] s=pattern.split(phoneNumber);

Eine andere Möglichkeit, einen gegebenen String und einen Den aufzuteilen, kann durch Verketten das gewünschte Format erzeugen.

Was kann der beste Weg sein, um dies zu erreichen

Antworten:

2 für die Antwort № 1

Du brauchst nur eine Linie:

String output = phoneNumber.replaceAll("(\d{3})(\d{3})(\d{4})", "($1) $2-$3");

Dieser Code bewirkt den folgenden Effekt:

1232345678 --> (123) 234-5678


Die Moral hier ist:

  • Verwenden Sie die API (anstatt Ihren eigenen Code zu schreiben)
  • Machen Sie die Dinge nicht zu kompliziert (wenn ein einfacher Ansatz verfügbar ist, verwenden Sie ihn)

0 für die Antwort № 2

Schauen Sie sich die Brute-Force-Lösung an:

Geben Sie einfach ein Format wie "(xxx) xxx-xxxx" ein, und der Code ersetzt x durch Nummern aus der Telefonnummer.

public static String format(String number, String format) {
char[] arr = new char[format.length()];
int i = 0;
for (int j = 0; j < format.length(); j++) {
if (format.charAt(j) == "x")
arr[j] = number.charAt(i++);
else
arr[j] = format.charAt(j);
}

return new String(arr);
}