0

我正在尝试在 *CELL_OPEN 和 *CELL_CLOSE 的 ASCII 文件中搜索 * 本身(即不是运算符)

我有这个代码:

do {
  importstring++; 
  numberline = ImportFiles.importarray.get(importstring);
} while (!numberline.startsWith("*CELL_CLOSE"))

这与 *CELL_OPEN 的额外方法不同。当我运行它时,它没有找到 *CELL_OPEN 或 *CELL_CLOSE。因此,我得到一个索引越界错误。我是否需要对 * 进行转义才能按字面意思理解?我怀疑是这样。如果我这样做,它的正确语法是什么?* 不起作用。\* 与没有转义的结果相同。谢谢。

4

2 回答 2

6

我是否需要对 * 进行转义才能按字面意思理解?

不。除非字符串被用于创建正则表达式(它不是,with startsWith),否则该"*"字符不是特殊的。

你的问题在别处。据推测,它numberline实际上从未以*CELL_CLOSE. (也许有一些空格?)找出实际问题的最佳选择是使用调试器。

于 2012-07-13T13:24:13.497 回答
1

您不需要转义字符,因为您匹配的是字符串而不是 reg exp。问题似乎出在:

importstring++; 
numberline = ImportFiles.importarray.get(importstring);

基本上你的 importstring 变得比你从 ImportFiles.importarray 得到的数组的大小更大

我认为你需要另一个停止条件

}while (importstring < ImportFiles.importarray.size && !numberline.startsWith("*CELL_CLOSE"))
于 2012-07-13T13:30:09.440 回答