首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java正则表达式在拆分过程中跳过字符序列

Java正则表达式在拆分过程中跳过字符序列
EN

Stack Overflow用户
提问于 2014-03-04 10:00:08
回答 5查看 65关注 0票数 0

我有一个字符串,它包含多个id及其名称:

1019-水稻分配/1022-小麦(补编)/1030-水稻BPLCVC (SLETY)/1031-水稻BPLCVC Adhoc (为K-35)

我想拆分它,并在我使用

代码语言:javascript
复制
 myString.split("[/or-]");

这几乎给了我想要的结果。但有一个问题,当在最后的组合中,程序名包含"-",程序也分裂了这一点,我不想要如何避免这一点。请提出一个通用的解决方案,它适用于像J-300这样的程序名称,而且不仅适用于K-35所需的输出。

  • 1019大米分配
  • 1031小麦(补编)
  • 1030米BPLCVC (SLETY)
  • 1031水稻BPLCVC特设(用于K-35)
EN

回答 5

Stack Overflow用户

发布于 2014-03-04 10:04:42

我会先在/进行拆分,得到一个ID / name -对数组,然后通过substring和第一个-indexOf将每个字符串分开,分别获得ID和name。

票数 1
EN

Stack Overflow用户

发布于 2014-03-04 10:10:02

不知道这对你是否合适:

代码语言:javascript
复制
String s = "yourString";
String[] v = s.split("/|(?<=(/|^)\\d{1,999})-");
System.out.println(Arrays.toString(v));

它的产出如下:

代码语言:javascript
复制
[1019, Rice Distribution, 1022,  Wheat (Supplement), 1030, Rice BPLCVC (SLETY), 1031, Rice BPLCVC Adhoc (For K-35)]

所以你看到最后一个元素,k-35在那里。

票数 1
EN

Stack Overflow用户

发布于 2014-03-04 10:10:52

代码语言:javascript
复制
String bubba = "1019-Rice Distribution/1022- Wheat (Supplement)/1030-Rice BPLCVC (SLETY)/1031-Rice BPLCVC Adhoc (For K-35)";

for(String c: bubba.split("/"){
 System.out.println(c.replaceFirst("-"," ");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22168592

复制
相关文章

相似问题

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