[英]Regex.Replace is not working with separators
我只想用String.Empty
替換,如果在給定的字符串中找到任何分隔符。
class Program
{
private const string Separators = "-(). ";
static void Main(string[] args)
{
var number = Format("88 88-88)8.8(88");
}
public static string Format(string number)
{
return Regex.Replace(number, Separators, string.Empty);
}
}
預期為: 8888888888
但當時是88 88-88)8.8(88
。我在這里錯過了什么嗎?
編輯 :如果使用
Separators.ToCharArray().ToList().ForEach(c => { number = number.Replace(c.ToString(), string.Empty);});
有用。 但是如果我用Regex.Replace
實現的話可能會更好。
使用正則表達式時,某些字符具有某些含義。 點表示“任何字符”,破折號表示范圍為0-9。 我已將這些字符轉義,然后將它們放在字符集[]中,這意味着“該集中的任何人”。 我還重命名了Separators
變量,以更好地反映它的含義。
嘗試以下方法:
class Program
{
private const string SeparatorsRegex = @"[\-()\. ]";
static void Main(string[] args)
{
var number = Format("88 88-88)8.8(88");
}
public static string Format(string number)
{
return Regex.Replace(number, SeparatorsRegex, string.Empty);
}
}
在Expresso中對其進行了測試,並且效果達到了預期。 對於正則表達式開發人員來說,這是一個很棒的工具:
(忽略可怕的網站設計,這是一個很好的實用誠實:P)
還有一點需要注意的是,如果您只想剝離所有不包含數字的內容,則可以使用以下代碼:
class Program
{
private const string StripNonNumbersRegex = @"[^\d]";
static void Main(string[] args)
{
var number = Format("88 88-88)8.8(88");
}
public static string Format(string number)
{
return Regex.Replace(number, StripNonNumbersRegex, string.Empty);
}
}
Regex.Replace()適用於模式,而不適用於分隔符。 您將其與String.Replace()混淆了。
String.Replace(source,“-”,string.empty)可以使用,但是您需要每個字符運行一次。 Regex.Replace(source,pattern,string.empty)會更好,但是您需要使用RegEx pattern ,而不是簡單列出字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.