我想将以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