我有一组变量,我想根据字符串中的alpha字符和数字字符对它们进行拆分。
String strPolNuber= AFR123456;
所以,我所有的字符串在开头都有3-4个字母,结尾有6-7个数字。
我希望将alpha和numeric分开,并通过在它们之间添加#将它们连接起来。
String strUpdatedString=AFR#123456;
有人能帮忙吗?
发布于 2018-01-25 18:53:34
所以你想把#
放在位置,它前面有字母字符,后面有数字。您可以不借助regex 环视机制就可以做到这一点。
实现它的代码看起来就像
str = str.replaceAll("(?<=[a-zA-Z])(?=\\d)","#");
(?<=[a-zA-Z])
确保匹配位置之前有字母字符,但不将该字符包含在匹配本身中。(?=\\d)
确保匹配位置后有数字,也不会将数字包含在匹配中,因此不会被任何东西删除。发布于 2018-01-25 18:54:30
那么regex替换:strPolNuber.replaceAll("([a-zA-Z]+)", "$1#")
呢?
如果字符串遵循如此严格的结构,这应该是可行的。它怎麽工作?将每个字符序列替换为相同的序列,后面跟着一个"#“。
发布于 2018-01-25 18:57:15
算法解决方案应该是这样的,
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();
}
https://stackoverflow.com/questions/48449876
复制相似问题