我想在这样的规则上格式化输入的字符串:替换除字符串中第一个位置之外的所有非数字符号:它应该只是数字或符号'+'。
我使用正则表达式功能
private static final String REGEXP_NOT_DIGITS = "[^\\+0-9]";
String result = sample.replaceAll(REGEXP_NOT_DIGITS, "");
但是这个替换的结果是在任何位置都有数字和'+'符号的字符串。 请帮助我澄清一下我的条件是我会替换所有'+'符号,除了行中只有1个位置。
编辑。现在输出是:
sample [0] sample = 0123456789;结果= 0123456789预计:0123456789
样品[1]样品= + 380 + 380 + 380 +;结果= + 380 + 380 + 380 +预期:+380380380
样本[2]样本= dd0 11 22 33 44 55;结果= 01122334455预计:01122334455
样本[3]样本= + 380-456(789);结果= +380456789预期:+380456789
样本[4]样本= d3 + 580 456 789;结果= 3 + 580456789预期:3580456789
sample [5] sample = +380456789;结果= +380456789预期:+380456789
除了在字符串
中包含符号'+'外,一切正常答案 0 :(得分:5)
您可以使用:
String result = sample.replaceAll("(?!^)\\+|[^+\\d]+", "");
(?!^)\\+
是一个负向前瞻,除了在行开头之外,它将匹配+
。
答案 1 :(得分:1)
你可以试试下面的正则表达式,
(?!^\\+)\\D
匹配除了+
符号之外的任何非数字字符。
String result = sample.replaceAll("(?!^\\+)\\D", "");
答案 2 :(得分:0)
这个怎么样:
"^[^\\d+]|\\D"