我试图解析字符串:
Portfolio1{交易代码:INFY-INFY-全名:Infosys Technologies Limited (ADR)-Share计数:100.0%的收益:388.2258065-头寸成本是:1240.0美元-这个头寸今天做的:-46.9997美元-这个头寸的总收益是:4814.0美元-这个头寸值:6054.0美元-{Exchange:纳斯达克-符号:GOOG-全名:Google.-股票计数:10.0%的收益:17.98444444-仓位成本是:4500。0美元股票盘点:0.0% Gain:0.0}--Portfolio2{Exchange:NASDAQ-Symbol:GOOG-Full名称:Google公司-股票计数:1000.0%收益:32.56679151-头寸成本是:400500.0美元-这个头寸今天做了:-1070.007美元这个头寸的总收益为:130430.0美元这个头寸值:530930.0美元-{交易所:纳斯达克-符号:MSFT全名:Microsoft公司-股票计数:10.0%的收益-4.03125-头寸成本是:320.0美元-这个头寸今天做的:-2.93001美元-这个头寸的总收益是:-12.9美元这个头寸值:307.1美元-{Exchange:NYSE-符号:IBM-全名:International Business Machines Corp..-股票数:10.0%收益:397.80769230000004-头寸成本是:260.0美元-今天的头寸:10.30014美元-这个头寸的总收益是:1034.3美元头寸价值:1294.3美元-{交易所:纳斯达克-代号:NVDA-全称:NVIDIA公司-股票数:100.0%收益:-10.79418345-头寸成本为:1788.0美元-今天的头寸:-70.0美元-该头寸的总收益为-193.0美元-这一头寸值:1595.0美元-“;
以分隔符作为[
我的代码是
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 [发布于 2010-04-30 18:40:10
[字符在正则表达式中有特殊的含义。你需要做的
String delims = "\\["; String[] tokens = s.split(delims);发布于 2010-04-30 18:56:30
正如罗布·迪马尔科已经说过的那样,当你使用基于正则表达式的方法时,你必须转义具有特殊意义的字符。
作为另一种选择,您可以使用StringTokenizer,它不使用regexes进行拆分,因此不必转义任何东西。这通常也更快,但无法与基于正则表达式的split的功能和灵活性相匹配。
StringTokenizer tok=new StringTokenizer(s, "[");
List<String> tokens=new ArrayList<String>();
while (tok.hasMoreTokens()){
tokens.add(tok.nextToken());
}https://stackoverflow.com/questions/2746816
复制相似问题