2

我正在尝试删除诸如“我”之类的东西。“二。” “279”(页码和章节)等来自故事“罗宾汉”的文本文件。到目前为止,我无法弄清楚如何摆脱数字(这arraylist是一个字符串)

for (int x = 0; x < list.size(); x++) {

    if (list.get(x).equalsIgnoreCase("I.") || list.get(x).equalsIgnoreCase("II.") || list.get(x).equalsIgnoreCase("III.") || list.get(x).equals("IV.") || list.get(x).equals("V.") || list.get(x).equalsIgnoreCase("VI.") || list.get(x).equalsIgnoreCase("VII.") || list.get(x).equalsIgnoreCase("VIII.") || list.get(x).equals("IX.") || list.get(x).equals("X.") || list.get(x).equals("XI.") || list.get(x).equalsIgnoreCase("XII.") || list.get(x).equalsIgnoreCase("XIII.") || list.get(x).equalsIgnoreCase("XIV.") || list.get(x).equalsIgnoreCase("XV.") || list.get(x).equalsIgnoreCase("XVI.") || list.get(x).equalsIgnoreCase("XVII.") || list.get(x).equalsIgnoreCase("XVIII.") || list.get(x).equalsIgnoreCase("XIX.") || list.get(x).equalsIgnoreCase("XX.") || list.get(x).equalsIgnoreCase("XXI.")) {
        list.remove(x);
        numWords--;
    }

    for (int y = 0; y < 9; y++) {
        if (list.get(x) == y) {
            list.remove(x);
            numWords--;
        }


    }

}

我知道我正在查看是否存在错误,y == list.get(x)但我真的想不出另一种删除数字的方法。

4

2 回答 2

5

而不是有那个庞大的if声明,你也许可以做类似的事情

if (list.get(x).toUpperCase().matches("[IVXLCDM]+\\.")) {...}

[IVXLCDM]匹配任何一个IV.. M- 所以[IVXLCDM]+匹配这些字符的任何连续字符串。\.确保字符串以句点结尾。

现在,如果您想匹配数字,您可以使用正则表达式"\\d+",并应用与上述相同的想法。

于 2012-12-03T23:17:58.023 回答
3

您需要使用正则表达式来找出匹配数字或罗马数字的行。您需要的正则表达式(正则表达式的缩写)可能类似于:

^([0-9]+)|([IVXLCM]+)\\.?$

检查阿拉伯数字和罗马数字。这是一个关于正则表达式的教程,它为您提供了一个示例应用程序来尝试正则表达式,并解释了语法。

于 2012-12-03T23:21:45.620 回答