首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用阿尔法和数字分割Java字符串

用阿尔法和数字分割Java字符串
EN

Stack Overflow用户
提问于 2018-01-25 18:47:02
回答 4查看 217关注 0票数 3

我有一组变量,我想根据字符串中的alpha字符和数字字符对它们进行拆分。

代码语言:javascript
运行
复制
String strPolNuber= AFR123456;

所以,我所有的字符串在开头都有3-4个字母,结尾有6-7个数字。

我希望将alpha和numeric分开,并通过在它们之间添加#将它们连接起来。

代码语言:javascript
运行
复制
String strUpdatedString=AFR#123456;

有人能帮忙吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-25 18:53:34

所以你想把#放在位置,它前面有字母字符,后面有数字。您可以不借助regex 环视机制就可以做到这一点。

实现它的代码看起来就像

代码语言:javascript
运行
复制
str = str.replaceAll("(?<=[a-zA-Z])(?=\\d)","#");
  • (?<=[a-zA-Z])确保匹配位置之前有字母字符,但不将该字符包含在匹配本身中。
  • (?=\\d)确保匹配位置后有数字,也不会将数字包含在匹配中,因此不会被任何东西删除。
票数 11
EN

Stack Overflow用户

发布于 2018-01-25 18:54:30

那么regex替换:strPolNuber.replaceAll("([a-zA-Z]+)", "$1#")呢?

如果字符串遵循如此严格的结构,这应该是可行的。它怎麽工作?将每个字符序列替换为相同的序列,后面跟着一个"#“。

票数 2
EN

Stack Overflow用户

发布于 2018-01-25 18:57:15

算法解决方案应该是这样的,

代码语言:javascript
运行
复制
private String seperateAlphaNum(String in, int n) {
  StringBuffer sb = new StringBuffer();
  boolean notfound = true;
  for (int i=0; i<n; i++) {
    if (notfound && (int)in.charAt(i) < 65) {
      sb.append("#");
      sb.append(in.charAt(i));
      notfound = false;
    } else {
      sb.append(in.charAt(i));
    }
  }
  if (sb.length() == n) sb.append("#");
  return sb.toString();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48449876

复制
相关文章

相似问题

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