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

本文关键字:空格 删除 我的 正则表达式 为什么 | 更新日期: 2023-09-27 18:17:25

我使用下面的代码来确定是否值输入到textBoxAddress。文本是一个号码(传真号码)或电子邮件地址。如果传真号码有空格,下面的isNumber测试将不起作用,所以我试图用Regex删除所有空白,空白没有被删除。你能发现我的问题吗?

谢谢。

    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);
}

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

用一个空格替换一个或多个空格。

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

这不会删除破折号,你的IsNumber方法也不是必须的。

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

试试这个:

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

我不太懂c#,但是如果你想删除空格,试着用空字符串代替它,而不是空格:)

您正在用空格替换空格!使用字符串。

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

以上所有:

完全不要使用正则表达式。只需使用Replace方法,将" "替换为""

如果您想用一个空格替换两个或多个连续空格,那么执行以下操作:

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

如果你想删除所有空格,那么这样做:

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

如果faxOrEmail只包含空格(" ")而不包含制表符,那么您可以使用:

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

另一方面,您也可以使用Regex删除除十进制数字以外的所有内容(包括破折号、斜杠、括号等):

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