首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有当以下字符是数字而前一个字符是字母时,如何将字符串拆分为"-“?Java/Scala

只有当以下字符是数字而前一个字符是字母时,如何将字符串拆分为"-“?Java/Scala
EN

Stack Overflow用户
提问于 2013-10-01 22:03:24
回答 1查看 138关注 0票数 2

我想找到一种将字符串拆分成"-“的方法,只适用于某些情况。

如果前面的字符是字母(小的还是大写的),如果它不是字符串中的第一个字符,我想分拆。以下字符必须是数字0-9.字符串中没有空格。

代码语言:javascript
运行
复制
-11 => List(-11)
v-11 => List(v,11)
v- => List(v-)
-2-11 => List(-2-11)
v-11- => List(v,11-)
-v-11- => List(-v,11-)

我无法用String.split(regex)正确地做这件事。我找到的唯一解决方案是解析整个字符串并查找每个字符。对此有判罚吗?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-01 22:09:44

尝试用以下正则表达式拆分字符串:

代码语言:javascript
运行
复制
"(?<=[A-Za-z])-(?=\\d+)"

添加一个测试类:

代码语言:javascript
运行
复制
@Test
public void atest() {
    String re = "(?<=[A-Za-z])-(?=\\d+)";
    String[] ss = new String[] { "-11", "v-11", "v-", "-2-11", "v-11-", "-v-11-" };
    for (String s : ss) {
        System.out.println(s + " => " + Arrays.toString(s.split(re)));
    }
}

产出:

代码语言:javascript
运行
复制
-11 => [-11]
v-11 => [v, 11]
v- => [v-]
-2-11 => [-2-11]
v-11- => [v, 11-]
-v-11- => [-v, 11-]
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19126758

复制
相关文章

相似问题

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