我正在尝试使用*本身(即不是运营商)搜索ASCII文件中的* CELL_OPEN和* CELL_CLOSE
我有这段代码:
do {
importstring++;
numberline = ImportFiles.importarray.get(importstring);
} while (!numberline.startsWith("*CELL_CLOSE"))
除了* CELL_OPEN的额外方法之外,这是相同的。 当我运行它时,它找不到* CELL_OPEN或* CELL_CLOSE。因此我得到索引超出范围错误。 从字面上看我是否需要逃避?我怀疑是这样的。如果我这样做,它的正确语法是什么? *不起作用。 \ *具有与无逃避相同的结果。 感谢。
答案 0 :(得分:6)
我是否需要逃避*才能从字面上理解?
没有。除非使用字符串创建正则表达式(并且不是startsWith
),否则"*"
字符不是特殊的。
你的问题出在其他地方。据推测,numberline
实际上从未以*CELL_CLOSE
开始。 (也许有一些空白?)找出实际问题的最佳方法是使用调试器。
答案 1 :(得分:1)
您不需要转义字符,因为您匹配字符串而不是reg exp。 问题似乎在于:
importstring++;
numberline = ImportFiles.importarray.get(importstring);
基本上你的importstring比从ImportFiles.importarray得到的数组的大小要大
我认为你需要另外一个停止条件
}while (importstring < ImportFiles.importarray.size && !numberline.startsWith("*CELL_CLOSE"))