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 № 1Du 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);
}