繁体   English   中英

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

[英]Converting digits to words in a string in Java

我有一个字符串,想要集成它,然后将其数字转换为英文单词。 例如,如果字符串为“ I ran 12 miles ”,我想将“ 12 ”转换为“ OneTwo ”并返回“ I ran OneTwo miles ”。 我将不胜感激。

我认为这是您要查找的方法: String.replaceAll

字符0 TO 9的UTF-16代码单元在48 and 57之间,因此您需要做的是检查字符串,并检查代码是否在这两个数字之间,因此,如果是,则将其替换为另一个字符串,

这段代码将帮助您:

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);
}

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

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));
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM