为什么我的正则表达式不能删除空格?

时间:2011-12-09 12:41:26

标签: c# regex

我正在使用下面的代码来确定输入到textBoxAddress.Text中的值是否是数字(传真号码)或电子邮件地址。如果传真号码有空格,下面的isNumber测试将不起作用,所以我试图用正则表达式删除所有空白区域,空格不被删除。你能发现我的问题吗?

谢谢。

    string faxOrEmail = textBoxAddress.Text;
    faxOrEmail = Regex.Replace(faxOrEmail, @"\s+", " ");  //<---Regex
    bool testForFax = IsNumber(faxOrEmail);

    if (testForFax == true)
    {
        //send fax
        MessageBox.Show(faxOrEmail);
    }
    else
    {
        backgroundWorker1.RunWorkerAsync(); //Send Email  
    }

static bool IsNumber(string value)
{
    // Return true if this is a number.
    int number1;
    return int.TryParse(value, out number1);
}

6 个答案:

答案 0 :(得分:1)

试试这个:

faxOrEmail = Regex.Replace(faxOrEmail, @"\s+", "");

我不太了解C#,但如果你想删除空格,请尝试用空字符串替换它而不是空格:)

答案 1 :(得分:1)

您正在用空格替换空格!使用String.Empty来避免这些问题:

faxOrEmail = Regex.Replace(faxOrEmail, @"\s+", String.Empty);

答案 2 :(得分:1)

您正在用一个空格替换一个或多个空格。

Regex.Replace(faxOrEmail, @"\s+", string.Empty);

这不会删除短划线,也不需要您的IsNumber方法。

string.Join(string.Empty, faxOrEmail.ToCharArray().Where(x=> char.IsNumber(x)))

答案 3 :(得分:0)

以上所有:

根本不要使用正则表达式。只需使用替换方法,然后将" "替换为""

答案 4 :(得分:0)

如果要用一个空格替换2个或更多个连续空格,请执行以下操作:

faxOrEmail = Regex.Replace(faxOrEmail, @"\s{2,}", " ");  

如果要删除所有空格,请执行以下操作:

faxOrEmail = Regex.Replace(faxOrEmail, @"\s+", string.Empty);  

答案 5 :(得分:0)

如果faxOrEmail仅包含空格(“”)且没有标签,那么您可以使用:

faxOrEmail = faxOrEmail.Replace(" ", ""); 

另一方面,您也可以删除所有内容(包括破折号,斜线,括号等),但使用正则表达式删除十进制数字:

faxOrEmail = Regex.Replace(faxOrEmail, "[^0-9]", "");