Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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#_String_Replace - Fatal编程技术网

C# 从字符串中删除交替空格

C# 从字符串中删除交替空格,c#,string,replace,C#,String,Replace,如何从字符串中删除空格,但仅当空格与非空格相邻时才删除 例如,我想把pumpkinpie变成南瓜饼 我当前的解决方案是String.Join(“”),input.Split(“”)不会保留空格。一种方法是匹配后跟非空格或2+空格的空格,并用空字符串替换它们: using System.Text.RegularExpressions; ... var str = "P u m p k i n p i e"; var res = Regex.Replace(str, @"\s(?=\S|\s{2

如何从字符串中删除空格,但仅当空格与非空格相邻时才删除

例如,我想把
pumpkinpie
变成
南瓜饼


我当前的解决方案是
String.Join(“”),input.Split(“”)不会保留空格。

一种方法是匹配后跟非空格或2+空格的空格,并用空字符串替换它们:

using System.Text.RegularExpressions;
...
var str = "P u m p k i n   p i e";
var res = Regex.Replace(str, @"\s(?=\S|\s{2,})", "");


一种方法是将空格与非空格或2+空格匹配,并用空字符串替换它们:

using System.Text.RegularExpressions;
...
var str = "P u m p k i n   p i e";
var res = Regex.Replace(str, @"\s(?=\S|\s{2,})", "");


我并不为此感到骄傲,但如果你不喜欢正则表达式

string[] splitters = new string[] { "  " };
string input = "P u m p k i n   p i e";
string output = String.Join(" ", input.Split(splitters, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Replace(" ", String.Empty)));

我并不为此感到骄傲,但如果你不喜欢正则表达式

string[] splitters = new string[] { "  " };
string input = "P u m p k i n   p i e";
string output = String.Join(" ", input.Split(splitters, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Replace(" ", String.Empty)));
那么:

string text = "I    l o v e   P u m p k i n                p i e";

// Use a special character for word delimiter. In this specific case, #
string result = Regex.Replace(text, @"\s{2,}", "#");

// Get the words
IEnumerable<string> words = result.Split('#').Select(w => String.Join(String.Empty, w.Split(' ')));

// Join the words with space character
result = String.Join(" ", words);
那么:

string text = "I    l o v e   P u m p k i n                p i e";

// Use a special character for word delimiter. In this specific case, #
string result = Regex.Replace(text, @"\s{2,}", "#");

// Get the words
IEnumerable<string> words = result.Split('#').Select(w => String.Join(String.Empty, w.Split(' ')));

// Join the words with space character
result = String.Join(" ", words);
string input=“pum P k in P i e”;
字符串输出=Regex.Replace(输入,“(?
stringinput=“pum P k in P i e”;


string output=Regex.Replace(input,“(?这是一个糟糕的问题吗?基本上是一个“为我编写代码”的问题。@在我自己尝试过之后,stackexchange支持哪种方法?),您的尝试
string.Join(“,input.Split(“”))
相当于
string.Replace(“,”)
,但效率可能更低(尽管仍然错误)为什么这是一个糟糕的问题?这基本上是一个“为我编写代码”的问题。@mason在我自己尝试过之后,stackexchange支持它。您尝试的
String.Join(“),input.Split(“”))
相当于
String.Replace(“,”)
,但效率可能更低(尽管仍然错误)
Regex
类从哪里来?
System.Regex
?@onlygusti
System.Text.regular expressions
。我知道,
Text
部分很奇怪。
Regex
类从哪里来?
System.Regex
?@onlygusti
System.Text.regular expressions
。我知道,
Text
部分很奇怪。这是什么不为此感到自豪的原因是什么?它是有效的,但人们通常使用正则表达式来处理字符串。@FrumRoll这只在正好有三个连续的空格字符时有效。@matiascero它似乎对我很有效far@MatiasCicero修复了删除连续空格>=2的问题。不为此感到自豪的原因是什么?这很有效,people通常使用正则表达式来处理字符串。@FrumRoll这只在正好有三个连续的空格字符时才有效。@MATIASCERO它似乎对我很有效far@MatiasCicero固定删除连续空格>=2。