我想编写一个除了两个输入参数之外的java API。首先是 inputStr ,第二个是 strFormat 。
public String covertString(String inputStr, String strFormat)
{
// Need logic
}
例如,
Input Arguments- inputStr: 999999999, strFormat: xxx-xx-xxxx
Output : 999-99-9999
Input Arguments- inputStr: 1112223333, strFormat: (xxx) xxx-xxxx
Output : (111) 222-3333
请建议是否有可用的实用程序?如果没有,最好的方法来实现这个问题?
答案 0 :(得分:3)
试试这个: -
import javax.swing.text.MaskFormatter;
String inputStr="11122288988";
String strFormat="(###) ###-#####";
public String covertString(String inputStr, String strFormat)
{
MaskFormatter maskFormatter= new MaskFormatter(strFormat);
maskFormatter.setValueContainsLiteralCharacters(false);
String finaldata=maskFormatter.valueToString(inputStr) ;
return finaldata;
}
输出: -
Input data :- 11122288988
Formatted Data :- (111) 222-88988
答案 1 :(得分:2)
你逐步浏览strFormat字符,如果你遇到" x",你从inputStr写数字,否则你写字符
答案 2 :(得分:1)
这应该有效,但假设输入字符串是正确的长度等。如果要实现这样的检查,请留给OP实现:
public String covertString(String inputStr, String strFormat)
{
final char[] array = strFormat.toCharArray(); // dups the content
int inputIndex = 0;
for (int index = 0; index < array.length; index++)
if (array[index] == 'x')
array[index] = inputStr.charAt(inputIndex++);
return new String(array);
}
答案 3 :(得分:0)
第二个参数String strFormat你应该实现( - )和()的ASCII字符 在你的逻辑中。
我认为这会有所帮助:http://javarevisited.blogspot.com/2012/08/how-to-format-string-in-java-printf.html
答案 4 :(得分:0)
您可以使用特定模式获取输出:
^(.{3})(.{3})(.{3})$ --> $1-$2-$3 to get 999-999-999 from 999999999
^(.{3})(.{3})(.{3})$ --> ($1) $2-$3 to get (999) 999-999 from 999999999
public String covertString(String inputStr, String strInputPattern, String strOutputPattern)
{
//strInputPattern could be "^(.{3})(.{3})(.{3})$"
//strOutputPattern could be "$1-$2-$3"
return inputStr.replaceAll(strInputPattern, strOutputPattern)
}
我希望这可以帮到你
答案 5 :(得分:0)
使用string.matches并使用正则表达式过滤您的条件。
喜欢这个-----
import java.util.Scanner;
公共类SocialSecurityNumber {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (true) {
System.out
.println("Input Social security Number (accepted form 123-45-6789): ");
String s = input.nextLine();
if (s.matches("\\d{3}-\\d{2}-\\d{4}")) {
System.out.println("SSN --- valid.");
break;
} else
System.out.println("SSN --- not valid.");
}
input.close();
}
}