在Java中将数字转换为字符串中的单词

时间:2016-09-10 09:48:18

标签: java

我有一个字符串,想要整合它并将其数字转换成英文单词。例如,如果字符串为“I ran 12 miles”,我想将“12”转换为“OneTwo”并返回“I ran OneTwo miles”。我会感激任何帮助。

3 个答案:

答案 0 :(得分:2)

我认为这是您正在寻找的方法:String.replaceAll

答案 1 :(得分:1)

字符0 TO 9的UTF-16代码单元位于48 and 57之间,所以你需要做的是对你的字符串进行parcourire并检查代码是否在这两个数字之间,所以如果是用另一个String替换它,

这段代码可以帮助您:

public static void main(String[] args) {
    String p = "I ran 12 miles";
    String[] numbersC = {"Zero", "One", "Two", "Three", "Four", "Five", 
        "Six", "Seven", "Eight", "Nine"};
    String newP = "";
    int ci;
    for (int i = 0; i < p.length(); i++) {
        ci = (int) p.charAt(i);
        if (ci >= 48 && ci <= 57) {
            newP += numbersC[Character.getNumericValue(p.charAt(i))];
        } else {
            newP += p.charAt(i);
        }
    }
    System.out.println(newP);
}

答案 2 :(得分:0)

使用此代码将数字转换为单词(它不能满足您的实际需要,但您应该自己尝试): -

public class NumberToWord  
{
private static final String[] numNames = {
    "zero",
    " one",
    " two",
    " three",
    " four",
    " five",
    " six",
    " seven",
    " eight",
    " nine",
};
public String convert(int number) {

    if (number == 0) { return "zero"; }

    String prefix = "";

    if (number < 0) {
        number = -number;
        prefix = "negative";
    }

    String current = "";

    do {
        int n = number % 10;
        current = numNames[n] + current;
        number /= 10;
    } while (number > 0);

    return (prefix + current).trim();
}

public static void main(String[] args) {
    NumberToWord obj = new NumberToWord();
    System.out.println("*** " + obj.convert(123456789));
    System.out.println("*** " + obj.convert(-55));
}

}