以下Java代码部分扫描给定的字符串以查找数字序列(单个或分组)。但我发现的问题是,我需要将数字的名称作为单独的而不是分组。也就是说,如果字符串有"Hello78, my name is number07 and not number1"
,而不是打印为"Seventy Eight"
,我怎样才能得到它"Seven Eight"
?将数字从字符串转换为Java中的文本
Pattern patternString = Pattern.compile("\\d+");
String inputText = "32h28ello12'34' this is a test89 87";
Matcher findNumber = patternString.matcher(inputText);
Scanner findText = new Scanner(inputText);
findText.useDelimiter("[^\\p{Alnum},\\.-]");
int counter = 0;
List<String> list = new ArrayList<>();
while (findNumber.find()) {
list.add(findNumber.group());
System.out.println(findNumber.group(0));
}
所以,这是输出的一个例子,是想引导自己:
32
28
12
34
89
87
-----------------------------------------------
LIST: [32, 28, 12, 34, 89, 87]
32h28ello12'34' this is a test89 87
-----------------------------------------------
我使用下面的一行继续测试和更换文本的数量,但后来我意识到我需要替换那个位置的整个号码。也就是说,如果是30,则文本是"Three Zero"
,而不是单独的"Three"
或单独的"Zero"
。
numString = inputText.replace(Character.toString(inputText.charAt(atPos)), one);
有些想法我已经是例如,投入另一个变量每个输出数量,读回,然后把它分解(每个)和写数字的名字,但我想不出怎么做。任何想法将不胜感激。
您应该通过char迭代字符串char,如果char值介于49和57之间,则使用switch-case语句将字符值打印为字符串! –
我在想这样的事情,但它意味着写很多代码(只是寻找替代品)。不确定使用开关盒。你有这个案例的一个小例子吗? –
扫描字符串的字符;使用'Character.isDigit(ch)'来测试每个人是否是一个数字。如果没有,只需将其附加到结果字符串。如果它是一个数字,使用'Character.digit(ch,10)'获取它的数值,然后使用该值来索引一个包含数字名称的'String'数组,并将该文本附加到结果中。 –