Próbuję sformatować dany numer telefonu komórkowego na dany format. Numer zostanie zapisany jako zwykły 10-cyfrowy numer w bazie danych i aby go pokazać w interfejsie użytkownika, muszę sformatować ten numer.
Używam JSTL, aby wyświetlić to po stronie JSP.Planowałem stworzyć niestandardową funkcję, która powinna akceptować numer telefonu komórkowego / numer telefonu i wymagany format i zwróci numer w wymaganym formacie, takim jak
(xxx) xxx-xxx xxx-xxx-xxx
Próbowałem podzielić dany numer telefonu na podstawie regExp, ale nie jestem pewien, jak to zrobić
String phoneNumber="1232345678";
Pattern pattern=Pattern.compile("\d{3}\d{3}\d{4}");
String [] s=pattern.split(phoneNumber);
Innym sposobem na podzielenie danego ciągu znaków i den można użyć konkatenacji, aby uzyskać pożądany format.
Jaki może być najlepszy sposób na osiągnięcie tego
Odpowiedzi:
2 dla odpowiedzi № 1Potrzebujesz tylko jedna linia:
String output = phoneNumber.replaceAll("(\d{3})(\d{3})(\d{4})", "($1) $2-$3");
Ten kod wywołuje następujący efekt:
1232345678 --> (123) 234-5678
Morał jest następujący:
- Użyj interfejsu API (zamiast pisać własny kod)
- Nie komplikuj zbytnio rzeczy (gdy dostępne jest proste podejście, skorzystaj z niego)
0 dla odpowiedzi nr 2
Spójrz na rozwiązanie brutalnej siły:
Po prostu wpisz format, na przykład „(xxx) xxx-xxxx”, a kod zastąpi x cyframi z numeru telefonu.
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);
}