Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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# - Fatal编程技术网

C# 仅当字符串超过一定大小时,才从字符串中删除空白

C# 仅当字符串超过一定大小时,才从字符串中删除空白,c#,C#,我有这个字符串: Corso Vittorio Emanuele II 9 20122 Milano 此字符串最初采用以下格式: Corso Vittorio Emanuele II 9 20122 Milano 因此,我使用正则表达式删除了换行符: var stringWithoutNewLine = Regex.Replace(text, "\t|\n|\r", string.Empty).Trim(); 现在,我尝试通过以下

我有这个字符串:

Corso Vittorio Emanuele II 9          20122          Milano
此字符串最初采用以下格式:

Corso Vittorio Emanuele II 9
      20122
      Milano
因此,我使用正则表达式删除了
换行符

var stringWithoutNewLine = Regex.Replace(text, "\t|\n|\r", string.Empty).Trim();
现在,我尝试通过以下方式删除空白:

 return Regex.Replace(stringWithoutNewLine, @"\s+", string.Empty);
但它没有按预期工作,因为我得到了这个结果:

CorsoVittorioEmanueleII920122Milano
何时应:

Corso Vittorio Emanuele II 9 20122 Milano

将正则表达式从
@“\s+”
更改为
@“\s{2,}”
。它将删除从2到(某种程度上)无限数重复出现的空白。然后,如Juharr所述,用空格替换:

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

将正则表达式从
@“\s+”
更改为
@“\s{2,}”
。它将删除从2到(某种程度上)无限数重复出现的空白。然后,如Juharr所述,用空格替换:

Regex.Replace(yourString, @"\s{2,}", " ");
试试这个

Console.WriteLine(Regex.Replace(stringWithoutNewLine, @"\s+", " "));
试试这个

Console.WriteLine(Regex.Replace(stringWithoutNewLine, @"\s+", " "));

你真的需要使用正则表达式吗?为什么不像这样

var splitString = text.Split(new char[0],StringSplitOptions.RemoveEmptyEntries);

var stringWithoutExtraSpaces = string.Join(" ",splitString);

你真的需要使用正则表达式吗?为什么不像这样

var splitString = text.Split(new char[0],StringSplitOptions.RemoveEmptyEntries);

var stringWithoutExtraSpaces = string.Join(" ",splitString);


要澄清的是,您是否仅尝试删除字符串中的空格+换行符?请将其替换为一个空格,而不是空字符串。您正在将所有空格替换为
字符串。空的
,我预期会出现此结果。。。将
string.Empty
替换为
:p只需使用原始正则表达式并替换为一个空格“”,而不是空字符串。要明确的是,您只是试图删除字符串中的空格+换行符吗?将其替换为一个空格,而不是空字符串。您正在将所有空格替换为
string.Empty
,我期待这个结果。。。用
替换
string.Empty
:p只需使用原始正则表达式并替换为一个空格”,而不是空字符串。感谢您的提示!这不是问题所在。问题是所有的空格都被一个空字符串代替,而不是一个空格。@juharr我也尝试了用
”代替
string.empty
,情况是一样的。如果你用
Regex.Replace(“这有空格,@”\s{2,}),string.empty)
你会得到“thishassspaces”。您必须将其替换为“”才能获得“this has spaces”,并且它也可以与
\s+
一起使用。谢谢您的提示!这不是问题所在。问题是所有的空格都被一个空字符串代替,而不是一个空格。@juharr我也尝试了用
”代替
string.empty
,情况是一样的。如果你用
Regex.Replace(“这有空格,@”\s{2,}),string.empty)
你会得到“thishassspaces”。您必须用“”替换以获取“this has spaces”,它也可以与
\s+
一起使用。您需要检查空字符串(或者
splitString
的长度为零)以避免
索引自动失效异常。您也可以使用
字符串。加入
。谢谢您的输入,我没有想到这一点。现在修改我的答案。您需要检查空字符串(或者
splitString
的长度为零),以避免出现
索引自动失效异常。您也可以使用
字符串。加入
。谢谢您的输入,我没有想到这一点。现在修改我的答案。