我正在寻找一种方法来解析可能会使用的几个不同终止字符的子字符串。我应该使用不同的方法还是使用正则表达式来排列字符?多个IndexOf的可能性
我当前的代码使用:
smallstring = bigstring.substring(bigstring.indexOf("starthere"), bigstring.indexOf("endhere"));
最后索引可以是 “]” 或 “;”我需要解析器能够检测到并终止子字符串。
我正在寻找一种方法来解析可能会使用的几个不同终止字符的子字符串。我应该使用不同的方法还是使用正则表达式来排列字符?多个IndexOf的可能性
我当前的代码使用:
smallstring = bigstring.substring(bigstring.indexOf("starthere"), bigstring.indexOf("endhere"));
最后索引可以是 “]” 或 “;”我需要解析器能够检测到并终止子字符串。
使用String
的此split()
方法,它是用于工作的工具:
String[] data = "a,b.c;d".split("[,.;]");
在上述例子中,使用三种不同的分离器(,.;
)的字符串可以使用一个正则表达式被分割。最终的结果是,String[]
称为data
,将包含所有被分隔符分离的字符串:
[a, b, c, d]
要检测结束索引,你可以写
int endIndex = Math.min(bigstring.indexOf("]"), bigstring.indexOf(";"));
if(endIndex == -1) { endIndex = bigstring.length(); }
String smallString = bigstring.substring(startIndex, endIndex);
如果在起始索引后面有两个指定字符,它就会奏效,但当它无法处理分号时,它会抛出一个超出边界异常的索引。太糟糕了,这将是最简单的方法。非常感谢:-) – 2013-05-01 17:17:11
@AlexBible我假设文件中会有一个结尾字符。如果没有,上面的(更新的)代码仍然可以工作,没有任何例外。 – 2013-05-01 17:53:57
试试这个
String smallstring = bigstring.replaceAll(".*starthere(.*)endhere.*", "$1");
使用正则表达式。 在这里你可以测试它 http://ocpsoft.org/tutorials/regular-expressions/java-visual-regex-tester/
这最终工作最好,并提供了一个更好的方法来解析我的字符串。谢谢! – 2013-05-01 17:17:54