在java中,将以"00"开头的字符串数字转换为"+"



我想将以00开头的字符串编号转换为+,例如0046760963101+46760963101。有什么解决方案可以通过regex处理它吗?

如果没有,你推荐什么解决方案?

附录:

如果它以000或更多开头,我不想用+号替换。

使用regex,假设输入是数字字符串

s.replaceFirst("^00", "+")

或者使用regex,如果您不确定输入格式

s.replaceFirst("^00([0-9]+)$", "+$1")

或者使用简单的匹配

s.startsWith("00") ? "+"+s.substring(2) : s

引入添加的要求:如果它以000或更多开头,我不想用+号替换。

String normalized = phone;
if ( !phone.matches("000+([0-9]+)") && phone.startsWith("00")) {
normalized = "+"+phone.substring(2);
}

检查您在regex测试仪中的输入,如:https://www.freeformatter.com/java-regex-tester.html#ad-输出

您可以尝试类似的

public static void main(String[] args) {
String number="0046760963101";
if(number.startsWith("00")) {
number=number.replaceFirst("00", "+");
}
System.out.println(number);
}

你可以用一个+来代替00,比如:

String str = "0046760963101";
String newStr = "+";
for (int i = 2; i < str.length(); i++)
{
newStr += str.charAt(i);
}

不带正则表达式:

String str = "0046760963101";
String replaced = str.charAt(2) == '0' ? str :  str.substring(0, 2).replace("00", "+") + str.substring(2);
System.out.println(replaced);

将打印:

+46760963101

最新更新