在Java中将以00开头的字符串转换为+

时间:2018-12-13 18:13:54

标签: java

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

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

附录:

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

5 个答案:

答案 0 :(得分:7)

使用正则表达式假定输入为数字字符串

du -h

或如果不确定输入格式,则使用正则表达式

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

或带有简单匹配项

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

答案 1 :(得分:1)

包括增加的要求:如果它以000或更多开头,我不想用+号代替。

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

检查您在正则表达式测试器中输入的内容,例如:https://www.freeformatter.com/java-regex-tester.html#ad-output

答案 2 :(得分:0)

您可以尝试这样的事情

public static void main(String[] args) {
    String number="0046760963101";

    if(number.startsWith("00")) {
        number=number.replaceFirst("00", "+");
    }

    System.out.println(number);
}

答案 3 :(得分:0)

您可以像这样用+替换00:

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

答案 4 :(得分:0)

没有正则表达式:

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

将打印:

+46760963101