我想将以00
开头的字符串编号转换为+
,例如将0046760963101
转换为+46760963101
。有什么解决方案可以通过正则表达式处理吗?
如果没有,您推荐什么解决方案?
附录:
如果它以000
开头或更多,我不想用+号代替。
答案 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