java中的哪个正则表达式可以进行这些转换?
"1.54.0.21" to "01540021"
或
"33.5.10.6" to "33051006"
我需要将.#
替换为0#
,将.##
替换为##
答案 0 :(得分:2)
您可以尝试类似......
StringBuilder output = new StringBuilder(8);
String input = "1.54.0.21";
Pattern p = Pattern.compile("\\d+");
Matcher matcher = p.matcher(input);
while (matcher.find()) {
String group = matcher.group();
if (group.length() < 2) {
output.append("0");
}
output.append(group);
}
System.out.println(input);
System.out.println(output);
哪些输出......
1.54.0.21
01540021
答案 1 :(得分:1)
没有正则表达式:
http://rextester.com/LGXETU62790
public static void main(String args[])
{
String str1 = "33.5.9.6";
String str2 = "1.54.0.21";
System.out.println(transform(str1));
System.out.println(transform(str2));
}
private static String transform(String str){
String[] splitted = str.split("\\.");
StringBuilder build = new StringBuilder();
for(String s : splitted){
build.append(String.format("%02d", Integer.parseInt(s)));
}
return build.toString();
}
答案 2 :(得分:0)
public String getToken(String elem) {
return (elem.size() == 1) ? ("0" + elem) : elem;
}
String[] a = "1.54.0.21".split("\\.");
String o = "", e;
int i = 0, len = a.size();
for (i = 0; i < len; i++) {
o = o + getToken(a[i]);
}
System.out.println(o); //01540021
答案 3 :(得分:0)
正则表达式的唯一功能是匹配字符串(或多行字符串)中的特定字符模式。 正则表达式可以在查找和替换模式中使用,但只能找到您感兴趣的字符串。当找到它们时,Split(),Remove(),Replace(),函数将更好地实现它的目的。
I recommend you : http://gskinner.com/RegExr/
这是一个在线工具,用于匹配正则表达式的字符串,以及学习模式。