的Java解析错误
我试图解析字符串:的Java解析错误
Portfolio1 [{交流:纳斯达克代码:INFY-全名:印孚瑟斯技术有限公司(ADR) - 分享数:100.0%的增益:388.2258065 - 该头寸的成本是:1240.0美元 - 今天所做的头寸:-46.9997美元 - 该头寸总收益为:4814.0美元 - 此头寸价值:6054.0美元} - {交易所:纳斯达克代码:GOOG-Full Name :Google Inc. - 分享次数:10.0收益百分比:17.98444444 - 头寸成本为:4500.0 USD - 今日获得的头寸:-10.70007 USD - 该头寸总收益:809.3 USD - 该头寸价值:5309.3 USD } - {交易所:纳斯达克代码:QCOM-全名:QUALCOMM,Inc.-股票数量:0.0收益率:0.0} - ] Portfolio2 [{交易所:纳斯达克代码:GOOG-全名:Google Inc. -share计数:1000.0-百分比收益:32.56679151 - 头寸成本为:400500.0美元 - 今日产生的头寸:-1070.007美元 - 该头寸总收益为:130430.0美元 - 此头寸价值:530930.0美元} - {兑换日期:纳斯达克代码:MSFT-全名:微软公司股票数量:10.0%收益:-4.03125 - 头寸成本是:320.0美元 - 今日此仓位:-2.93001美元 - 该头寸的总收益为:-12.9美元 - 这个位置价值:307.1 USD} - {交换:纽约证券交易所代码:IBM-全名:国际商业机器股份有限公司 - 分享次数:10.0收益:397.80769230000004 - 头寸成本是:260.0 USD-这个位置今天制造:-10.30014美元 - 此位置总收益为:1034.3美元 - 此位置价值:1294.3美元} - {兑换:纳斯达克代码:NVDA-全名:NVIDIA Corporation-分享次数:100.0收益:-10.79418345 - 头寸成本是:1788.0 USD - 今日获得的头寸:-70.0 USD - 该头寸的总收益为:-193.0 USD - 此头寸的价值为:1595.0 USD} - ]“;
与分隔符为[
和我的代码是
String delims = "[";
String[] tokens = s.split(delims);
for (int i = 0; i < tokens.length; i++)
System.out.println(tokens[i]);
,但它给我错误
java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [
[字符在正则表达式特殊的含义。你需要做的
String delims = "\\["; String[] tokens = s.split(delims);
由于罗布迪马可已经说了,你必须使用正则表达式为基础的方法时逃跑拥有特殊意义的字符。
作为一种替代方法,您可以使用StringTokenizer
,它不使用正则表达式来分割,因此您不必转义任何东西。这通常也更快,但不能匹配基于正则表达式split
的功能和灵活性。
StringTokenizer tok=new StringTokenizer(s, "[");
List<String> tokens=new ArrayList<String>();
while (tok.hasMoreTokens()){
tokens.add(tok.nextToken());
}
啊,再次用西部最快的枪射击。 +1。 – Pops 2010-04-30 18:42:46