我有一组变量,我想根据字符串中的字母字符和数字字符拆分它们。
String strPolNuber= AFR123456;
因此,我的所有字符串在开始时都会有3-4个字母字符,最后会有6到7个字符。
我想分离alpha和数字,并通过在它们之间添加#来连接它们。
String strUpdatedString=AFR#123456;
有人可以帮忙吗?
答案 0 :(得分:11)
所以你想把#
放在的地方,前面有字母字符,后面有数字。你可以在正则表达式look-around mechanisms的帮助下完成。
实现它的代码可以看起来像
str = str.replaceAll("(?<=[a-zA-Z])(?=\\d)","#");
(?<=[a-zA-Z])
确保在匹配的地方之前有字母字符,但不会在匹配中包含该字符(?=\\d)
确保匹配后的位置有数字,匹配中也不会包含数字,因此不会被删除。答案 1 :(得分:2)
正则表达式取代怎么样:
strPolNuber.replaceAll("([a-zA-Z]+)", "$1#")
如果字符串遵循如此严格的结构,这应该有效。它是如何工作的?您可以按相同的顺序替换每个字符序列,然后按&#34;#&#34;。
答案 2 :(得分:0)
算法解决方案就是这样的,
MERGE
答案 3 :(得分:0)
另一种算法,
static String split(String s) {
for (int i = 0; i < s.length() - 1; i++) {
if (!Character.isLetter(s.charAt(i)))
return s.substring(0, i) + "#" + s.substring(i, s.length());
}
// String doesn't contain numeric part
return s;
}