我试图删除像#34; I。" " II&#34。 " 279" (页码和章节)等来自故事的文本文件" robin hood"。到目前为止,我无法弄清楚如何摆脱数字(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)
时出现了错误,但我无法想到另一种删除号码的方式。
答案 0 :(得分:3)
您可以执行类似
之类的操作,而不是使用那么大的if
语句
if (list.get(x).toUpperCase().matches("[IVXLCDM]+\\.")) {...}
[IVXLCDM]
匹配I
,V
.. M
- 所以[IVXLCDM]+
匹配这些字符的任何连续字符串。 \.
确保字符串以句点结束。
现在,如果你想匹配数字,你可以使用正则表达式"\\d+"
,并应用与上面相同的想法。
答案 1 :(得分:3)
您需要使用正则表达式来查找与数字或罗马数字匹配的行。 正则表达式的正则表达式(正则表达式的缩写)可能类似于:
^([0-9]+)|([IVXLCM]+)\\.?$
检查阿拉伯数字和罗马数字。 这是关于正则表达式的tutorial,它为您提供了一个示例应用程序来试用正则表达式,并解释了语法。