Java:如何将字符串转换为给定的自定义格式?
我想编写一个java API,它不包含两个输入参数。第一个输入str和第二个标准格式Java:如何将字符串转换为给定的自定义格式?,java,string,Java,String,我想编写一个java API,它不包含两个输入参数。第一个输入str和第二个标准格式 public String covertString(String inputStr, String strFormat) { // Need logic } 比如说, Input Arguments- inputStr: 999999999, strFormat: xxx-xx-xxxx Output : 999-99-9999 Input Arguments- inputStr: 11122233
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
请建议是否有可用的公用设施?如果没有,解决此问题的最佳方法是什么?您将逐个检查标准格式字符,如果遇到“x”,您将从inputStr写入数字,否则您将写入字符。这应该可以工作,但假设输入字符串的长度正确等。如果要执行此类检查,则由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);
}
publicstringcovertstring(stringinputstr,stringstrformat)
{
final char[]array=strFormat.toCharArray();//复制内容
int-inputIndex=0;
for(int index=0;index
第二个参数字符串strFormat您应该实现ASCII字符(-)和()
按照你的逻辑
我想这会有帮助:试试这个:-
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
您可以使用特定模式获取输出:
^(.{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)
}
我希望这能帮助您使用string.matches并使用regex筛选您的条件 像这样----- 导入java.util.Scanner 公共类社会安全编号{
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();
}
}你自己做了什么尝试?我通常建议使用正则表达式或java字符串类的子字符串功能。这个网站不是免费提供正确的解决方案,而是当你遇到问题时获得帮助。我看不出你到底被困在哪里:-)你能先粘贴你的代码吗?你如何处理太短/太长/不包含数字字符的字符串?谢谢你的快速回复。我试图用一种传统的方法来解决这个问题,比如读取标准格式的字符1乘1,如果我找到“x”,我会从inputStr中写入数字,否则我会写入字符或空白。但我只是确认是否有任何实用程序可用于解决此问题。嗯,您也可以使用
格式化程序。这看起来很棒。让我试试。谢谢你的回复。我测试了这个解决方案。这对我来说很好,解决了我的问题。非常感谢您分享完美的解决方案。感谢您的回复。这绝对是解决这类问题的方法之一。我还得到了“JDeveloper”给出的其他好的/通用的解决方案(请参见上面的答案)。