Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不是';我的正则表达式没有删除空格吗?_C#_Regex - Fatal编程技术网

C# 为什么不是';我的正则表达式没有删除空格吗?

C# 为什么不是';我的正则表达式没有删除空格吗?,c#,regex,C#,Regex,我使用下面的代码来确定输入textBoxAddress.Text的值是数字(传真号码)还是电子邮件地址。如果传真号码有空格,我下面的isNumber测试将不起作用,因此我尝试用正则表达式删除所有空白,空白不会被删除。你能发现我的问题吗 多谢各位 string faxOrEmail = textBoxAddress.Text; faxOrEmail = Regex.Replace(faxOrEmail, @"\s+", " "); //<---Regex bool

我使用下面的代码来确定输入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);
}
string faxOrEmail=textBoxAddress.Text;
faxOrEmail=Regex.Replace(faxOrEmail,@“\s+”,“”)// 试试这个:

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

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

您正在用空格替换空格!使用String.Empty可避免以下问题:

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

您正在用单个空间替换一个或多个空间

Regex.Replace(faxOrEmail, @"\s+", string.Empty);
这不会删除破折号,也不需要IsNumber方法

string.Join(string.Empty, faxOrEmail.ToCharArray().Where(x=> char.IsNumber(x)))
上述各项:


根本不要使用正则表达式。如果要用一个空格替换两个或多个连续空格,只需使用Replace方法将
替换为

,然后执行以下操作:

faxOrEmail = Regex.Replace(faxOrEmail, @"\s{2,}", " ");  
faxOrEmail = Regex.Replace(faxOrEmail, @"\s+", string.Empty);  
如果要删除所有空格,请执行以下操作:

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

例如,如果faxOrEmail仅包含空格(“”),而没有选项卡,则可以使用:

faxOrEmail = faxOrEmail.Replace(" ", ""); 
另一方面,您也可以使用正则表达式删除除十进制数字以外的所有内容(包括破折号、斜杠、括号等):

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

事实上,我不喜欢这个答案,如果海报使用了String.Empty,首先他就不会遇到这个问题……正如我所说,我不知道c,所以我使用了“”这是空字符串的一种常见形式:)你想一个一个地删除两个或多个空格,对吗?然后执行以下操作:然后执行以下操作:
Regex.Replace(faxOrEmail,@“\s{2,},”)我使用它。嗨,威尔,你能给我一个如何使用string.join的例子吗?我尝试了faxOrEmail=string.Join(string.Empty…),但遇到了一个关于无效参数的错误。Thanks@SteveWood:我给出的示例运行良好。已对其进行测试。需要有关错误的更多信息以找出问题所在。非常感谢。