Java:如何将字符串转换为给定的自定义格式?

时间:2014-03-12 12:48:01

标签: java string

我想编写一个除了两个输入参数之外的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

请建议是否有可用的实用程序?如果没有,最好的方法来实现这个问题?

6 个答案:

答案 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();
}

}