我想按照这样的规则格式化输入的字符串:替换除字符串中第一个位置之外的所有非数字符号:它应该只是数字或符号“+”。
我使用正则表达式功能
private static final String REGEXP_NOT_DIGITS = "[^\\+0-9]";
String result = sample.replaceAll(REGEXP_NOT_DIGITS, "");
但是这个替换的结果是在任何位置都有数字和'+'符号的字符串。 请帮助我澄清我的条件,即我将替换行中除 1 个位置之外的所有“+”符号。
编辑。现在输出是:
sample[0] sample = 0123456789; result = 0123456789 expected:0123456789
sample[1] sample = +380+380+380+; result = +380+380+380+ expected:+380380380
sample[2] sample = dd0 11 22 33 44 55; result = 01122334455 expected:01122334455
sample[3] sample = +380-456(789); result = +380456789 expected:+380456789
sample[4] sample = d3+580 456 789; result = 3+580456789 expected:3580456789
sample[5] sample = +380456789; result = +380456789 expected:+380456789
一切正常,除了字符串中有符号“+”
最佳答案
您可以使用:
String result = sample.replaceAll("(?!^)\\+|[^+\\d]+", "");
RegEx Demo
(?!^)\\+
是一个否定前瞻,它将匹配 +
除了行首之外的任何地方。
关于Java:替换第一个位置上除符号 "+"之外的所有非数字符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607759/