首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java解析错误

Java解析错误
EN

Stack Overflow用户
提问于 2010-04-30 18:36:09
回答 2查看 4.3K关注 0票数 3

我试图解析字符串:

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美元-“;

以分隔符作为[

我的代码是

代码语言:javascript
复制
String delims = "[";
String[] tokens = s.split(delims);

for (int i = 0; i < tokens.length; i++)
    System.out.println(tokens[i]);

但这给了我错误

代码语言:javascript
复制
java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-30 18:40:10

[字符在正则表达式中有特殊的含义。你需要做的

代码语言:javascript
复制
String delims = "\\["; String[] tokens = s.split(delims);
票数 8
EN

Stack Overflow用户

发布于 2010-04-30 18:56:30

正如罗布·迪马尔科已经说过的那样,当你使用基于正则表达式的方法时,你必须转义具有特殊意义的字符。

作为另一种选择,您可以使用StringTokenizer,它不使用regexes进行拆分,因此不必转义任何东西。这通常也更快,但无法与基于正则表达式的split的功能和灵活性相匹配。

代码语言:javascript
复制
StringTokenizer tok=new StringTokenizer(s, "[");
List<String> tokens=new ArrayList<String>();
while (tok.hasMoreTokens()){
   tokens.add(tok.nextToken());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2746816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档