如何从文本中删除多个点(.)?

3
如何从文本中删除多个点(.)?
例如:
123..45  = 123.45
10.20.30 = 10.2030
12.34    = 12.34
12..     = 12
123...45 = 123.45

如何做到这一点?

提前感谢。


1
你尝试过什么吗?看起来你知道可以用正则表达式实现,那你的方法是什么? - vlad
1
你的第四个例子(12.. = 12)似乎与你所要求的相反。难道不应该是12.. = 12吗? - spender
4个回答

3

不一定要使用正则表达式,你可以通过以下方法实现你需要的功能:

 string s = "10.20.30";
        int n;
        if( (n=s.IndexOf('.')) != -1 )
            s = string.Concat(s.Substring(0,n+1),s.Substring(n+1).Replace(".",""));

1
Regex.Replace("Yourstring", "[.]{2,}",".");

这只会从连续的“.”组中删除第二个“.”。例如,1..2..3将变为1.2.3。 - spender
2
@Wowa:请详细说明您的代码,展示它是如何解决问题的-这将有助于未来的其他人。 - Our Man in Bananas

0
using System.Linq;
...
string s = "10.20.30";
while (s.Count( c => c == '.') > 1)
    s = s.Remove( s.LastIndexOf('.'),1);

0

好的,使用这个Regex.Replace的重载, 这里的技巧是匹配第一个.之后的所有内容,通过使用一个向后查找组[(?<=],然后使用MatchEvaluator来清除Match

Regex.Replace(
    "127.0.8", //input string
    @"(?<=\.).*", //match everything after 1st "."
    m => m.Value.Replace(".",string.Empty)) //return value of match without "."

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接