java - 在 Java 中将数字从字符串转换为文本

标签 java

Java 代码的以下部分扫描给定的字符串以查找数字序列(单独的或分组的)。但我发现的问题是我需要将数字的名称写为单独的而不是分组的。也就是说,如果字符串有 “Hello78,我的名字是 number07 而不是 number1”,而不是打印为 “七十八”,我怎样才能让它成为 “七八”

    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,则文本是“三零”,而不是单独的“三” 或单独的“零”

numString = inputText.replace(Character.toString(inputText.charAt(atPos)), one);

我的一些想法是,例如,将每个输出数字放入另一个变量中,将其读回,然后将其拆分(每个)并写入数字的名称,但我不知道该怎么做。任何想法将不胜感激。

最佳答案

如果您期望 “HelloSeven Even,我的名字...” 作为您的输出,那么您可以使用以下内容:

    String[] numberTexts = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
    StringBuilder builder = new StringBuilder();
    String inputText = "32h28ello12'34' this is a test89 87";

    for (int i=0; i < inputText.length(); i++) {
        char c = inputText.charAt(i);
        if (Character.isDigit(c)) {
            String numberText = numberTexts[Character.getNumericValue(c)];
            builder.append(numberText);
            // append space if next character is a digit
            if (i < inputText.length() - 1 && Character.isDigit(inputText.charAt(i+1))){
                builder.append(" ");
            }
        } else {
            builder.append(c);
        }
    }

    System.out.println(builder.toString());

此处,inputText 会针对所有字符进行迭代,并且数字将替换为其文本。如果下一个字符是数字,则附加一个空格字符。

关于java - 在 Java 中将数字从字符串转换为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46087169/

相关文章:

java从另一个 Action 调用 Action

java - 如何检查eclipse工作区是否被锁定

java - java中大的负十六进制值转换为long

java - 使用JAVA代码创建类图

java - 从截击 JSON 对象 POST 方法响应中捕获 cookie

java - 如何在 Java 中格式化字符串

java - 在序列化期间对 URL 进行编码/解码的 Jackson 注释或方法?

java - 如何将 JUnit 测试结果记录到文件中?

java - fileChooser.setDialogType() 不起作用

java - Mockito:是否可以将 mock 与方法名称结合起来在 when() 调用中创建 methodCall?