我需要一个正则表达式来执行以下操作:
我有这个字符串:123.45.678.7,我需要替换第二个字符串中的所有(。)字符。结果将是123.456787
¿任何人都可以帮助我吗?
答案 0 :(得分:1)
System.out.println(
"123.45.678.7".replaceAll("\\G((?!^).*?|[^\\.]*\\..*?)\\.", "$1"));
123.456787
这也可以在没有正则表达式的情况下完成:
String str = "123.45.678.7";
String[] arr = str.split("\\.", 2);
System.out.println(arr[0] + "." + arr[1].replace(".", ""));
123.456787
答案 1 :(得分:0)
只需创建一个功能......
function removeAllButFirst(myParam)
{
var numReplaces = 0;
var retVal = myParam.replace(/\./g, function(allMatch, currMatch) {
return ++numReplaces==1 ? '.' : ''; });
return retVal;
}
答案 2 :(得分:0)
刚刚进行了翻找并在网上发现了这一点 - 它相当粗糙,但是可以胜任......
retVal = retVal.replaceFirst(".","$");
retVal = retVal.replaceAll(".","");
retVal = retVal.replaceFirst("$",".");
这确实假设你输入中没有任何$ - 如果你选择了不同的字符。 它不是很好,可能有更好的单一正则表达式使用像LookBehinds这样的东西,但我不是Java开发人员,所以不能说。
答案 3 :(得分:0)
此代码将所有句点与正则表达式匹配,然后将第一个小数点放回字符串中。
以下是测试结果:
123.45.678.7, 123.456787
这是代码。
public class SecondMatch {
public String match(String s) {
StringBuilder builder = new StringBuilder();
String[] parts = s.split("\\.");
for (int i = 0; i < parts.length; i++) {
builder.append(parts[i]);
if (i == 0) {
builder.append(".");
}
}
return builder.toString();
}
public static void main(String[] args) {
String s = "123.45.678.7";
String t = new SecondMatch().match(s);
System.out.println(s + ", " + t);
}
}
答案 4 :(得分:0)
这个正则表达式也应该有效:
String str = "123.45.678.9";
String repl = str.replaceAll("([^.]*\\.[^.]*|[^.]*)\\.", "$1");
// repl = 123.456789