*需要逃脱角色?

时间:2012-07-13 13:22:20

标签: java escaping

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

我有这段代码:

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

除了* CELL_OPEN的额外方法之外,这是相同的。 当我运行它时,它找不到* CELL_OPEN或* CELL_CLOSE。因此我得到索引超出范围错误。 从字面上看我是否需要逃避?我怀疑是这样的。如果我这样做,它的正确语法是什么? *不起作用。 \ *具有与无逃避相同的结果。 感谢。

2 个答案:

答案 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"))