尝试从 <String> 数组列表中删除罗马数字和数字

Zac*_*ach 2 java arrays numbers list

我正在尝试删除诸如“我”之类的东西。“二。” “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--;
        }


    }

}
Run Code Online (Sandbox Code Playgroud)

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

ars*_*jii 5

if你也许可以做一些类似的事情,而不是发表那么大的声明

if (list.get(x).toUpperCase().matches("[IVXLCDM]+\\.")) {...}
Run Code Online (Sandbox Code Playgroud)

[IVXLCDM]匹配I, V.. M- 因此[IVXLCDM]+匹配这些字符的任何连续字符串。确保\.字符串以句点结束。

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