如何在 java 中格式化转换后的 phone 数字?
How to format a converted phone number in java?
我的程序仅将字母数字 phone 数字转换为数字。例如 1-800-FLOWERS 到 18003569377。但是,我试图格式化我的输出以显示 1-800-356-9377。
到目前为止,这是我的代码:
public static void main(String[] args)
{
System.out.println ("Enter phone number:");
Scanner scanInput = new Scanner (System.in);
String initialPhoneNumber;
initialPhoneNumber = scanInput.nextLine ();
initialPhoneNumber = initialPhoneNumber.toUpperCase();
long convertedPhoneNumber = phoneNumber (initialPhoneNumber);
System.out.println ("Converted: " + convertedPhoneNumber);
}
public static long phoneNumber (String initialPhoneNumber)
{
long number = 0;
int stringLength = initialPhoneNumber.length();
for (int digitNum = 0 ; digitNum < stringLength ; digitNum++ )
{
char ch = initialPhoneNumber.charAt(digitNum);
if (Character.isLetter(ch))
{
switch(ch)
{
case 'A' : case 'B' : case 'C' : number *= 10; number += 2; break;
case 'D' : case 'E' : case 'F' : number *= 10; number += 3; break;
case 'G' : case 'H' : case 'I' : number *= 10; number += 4; break;
case 'J' : case 'K' : case 'L' : number *= 10; number += 5; break;
case 'M' : case 'N' : case 'O' : number *= 10; number += 6; break;
case 'P' : case 'Q' : case 'R' : case 'S' : number *= 10; number += 7; break;
case 'T' : case 'U' : case 'V' : number *= 10; number += 8; break;
case 'W' : case 'X' : case 'Y' : case 'Z' : number *= 10; number += 9; break;
}
}
else if (Character.isDigit(ch))
{
number *= 10; number += Character.getNumericValue(ch);
}
}
return number;
}
如有任何帮助,我们将不胜感激!
你可以使用 StringBuilder
之类的东西
StringBuilder sb = new StringBuilder(
String.valueOf(convertedPhoneNumber));
sb.insert(7, '-');
sb.insert(4, '-');
sb.insert(1, '-');
System.out.println("Converted: " + sb);
最好将 phone 数字存储为字符串,但如果存储为整数,则可以按以下方式进行。您可以使用 /10 或 /100 或 /1000 ...(整数除法)删除右侧的数字。您可以使用 % 10 或 % 100 或 % 1000 ... (remainder/modulus) 删除左侧的数字。这些操作的某种组合将隔离您想要的数字。
有字符串的标准格式化方法。在此示例中,我采用了子字符串并将其格式化为 %s-%s-%s-%.
%s - 显示子串,第一个 %s 是第一个子串,第二个 %s 是第二个子串,依此类推
String number = "18003569377";
String formattedNumber = String.format("%s-%s-%s-%s", number.substring(0, 1), number.substring(1, 4), number.substring(4, 7),number.substring(7, 11));
有关 String.format 的更多详细信息,您可以阅读以下链接:
http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html
http://examples.javacodegeeks.com/core-java/lang/string/java-string-format-example/
在您的主要方法中添加下面提到的内容将解决您的问题。
long subString = (convertedPhoneNumber%10000000);
String updatedStringPhone = initialPhoneNumber.substring(0,6)+subString/10000+"-"+subString%10000;
总体方法为:
public static void main(String[] args)
{
System.out.println ("Enter phone number:");
Scanner scanInput = new Scanner (System.in);
String initialPhoneNumber;
initialPhoneNumber = scanInput.nextLine ();
initialPhoneNumber = initialPhoneNumber.toUpperCase();
long convertedPhoneNumber = phoneNumber (initialPhoneNumber);
long subString = (convertedPhoneNumber%10000000);
String updatedStringPhone = initialPhoneNumber.substring(0,6)+subString/10000+"-"+subString%10000;
System.out.println("Updated: "+updatedStringPhone);
System.out.println ("Converted: " + convertedPhoneNumber);
}
描述:
转换为字符串并添加以下字符串。例如
“1-800-”
“356”
"-"
“9377”
我的程序仅将字母数字 phone 数字转换为数字。例如 1-800-FLOWERS 到 18003569377。但是,我试图格式化我的输出以显示 1-800-356-9377。
到目前为止,这是我的代码:
public static void main(String[] args)
{
System.out.println ("Enter phone number:");
Scanner scanInput = new Scanner (System.in);
String initialPhoneNumber;
initialPhoneNumber = scanInput.nextLine ();
initialPhoneNumber = initialPhoneNumber.toUpperCase();
long convertedPhoneNumber = phoneNumber (initialPhoneNumber);
System.out.println ("Converted: " + convertedPhoneNumber);
}
public static long phoneNumber (String initialPhoneNumber)
{
long number = 0;
int stringLength = initialPhoneNumber.length();
for (int digitNum = 0 ; digitNum < stringLength ; digitNum++ )
{
char ch = initialPhoneNumber.charAt(digitNum);
if (Character.isLetter(ch))
{
switch(ch)
{
case 'A' : case 'B' : case 'C' : number *= 10; number += 2; break;
case 'D' : case 'E' : case 'F' : number *= 10; number += 3; break;
case 'G' : case 'H' : case 'I' : number *= 10; number += 4; break;
case 'J' : case 'K' : case 'L' : number *= 10; number += 5; break;
case 'M' : case 'N' : case 'O' : number *= 10; number += 6; break;
case 'P' : case 'Q' : case 'R' : case 'S' : number *= 10; number += 7; break;
case 'T' : case 'U' : case 'V' : number *= 10; number += 8; break;
case 'W' : case 'X' : case 'Y' : case 'Z' : number *= 10; number += 9; break;
}
}
else if (Character.isDigit(ch))
{
number *= 10; number += Character.getNumericValue(ch);
}
}
return number;
}
如有任何帮助,我们将不胜感激!
你可以使用 StringBuilder
之类的东西
StringBuilder sb = new StringBuilder(
String.valueOf(convertedPhoneNumber));
sb.insert(7, '-');
sb.insert(4, '-');
sb.insert(1, '-');
System.out.println("Converted: " + sb);
最好将 phone 数字存储为字符串,但如果存储为整数,则可以按以下方式进行。您可以使用 /10 或 /100 或 /1000 ...(整数除法)删除右侧的数字。您可以使用 % 10 或 % 100 或 % 1000 ... (remainder/modulus) 删除左侧的数字。这些操作的某种组合将隔离您想要的数字。
有字符串的标准格式化方法。在此示例中,我采用了子字符串并将其格式化为 %s-%s-%s-%.
%s - 显示子串,第一个 %s 是第一个子串,第二个 %s 是第二个子串,依此类推
String number = "18003569377";
String formattedNumber = String.format("%s-%s-%s-%s", number.substring(0, 1), number.substring(1, 4), number.substring(4, 7),number.substring(7, 11));
有关 String.format 的更多详细信息,您可以阅读以下链接: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html http://examples.javacodegeeks.com/core-java/lang/string/java-string-format-example/
在您的主要方法中添加下面提到的内容将解决您的问题。
long subString = (convertedPhoneNumber%10000000);
String updatedStringPhone = initialPhoneNumber.substring(0,6)+subString/10000+"-"+subString%10000;
总体方法为:
public static void main(String[] args)
{
System.out.println ("Enter phone number:");
Scanner scanInput = new Scanner (System.in);
String initialPhoneNumber;
initialPhoneNumber = scanInput.nextLine ();
initialPhoneNumber = initialPhoneNumber.toUpperCase();
long convertedPhoneNumber = phoneNumber (initialPhoneNumber);
long subString = (convertedPhoneNumber%10000000);
String updatedStringPhone = initialPhoneNumber.substring(0,6)+subString/10000+"-"+subString%10000;
System.out.println("Updated: "+updatedStringPhone);
System.out.println ("Converted: " + convertedPhoneNumber);
}
描述:
转换为字符串并添加以下字符串。例如
“1-800-”
“356”
"-"
“9377”