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

C# 尝试用单个空格替换所有空白

C# 尝试用单个空格替换所有空白,c#,regex,whitespace,C#,Regex,Whitespace,有什么想法吗 我的程序是一个文件验证实用程序,我必须读入一个格式文件,然后用一个空格解析每一行。但显然,编写格式文件的人可能会使用制表符、2个空格或任何形式的空白,我正在寻找一些代码来实现这一点。我试过这个: public static string RemoveWhitespace(this string line) { try { return new Regex(@"\s*

有什么想法吗

我的程序是一个文件验证实用程序,我必须读入一个格式文件,然后用一个空格解析每一行。但显然,编写格式文件的人可能会使用制表符、2个空格或任何形式的空白,我正在寻找一些代码来实现这一点。我试过这个:

        public static string RemoveWhitespace(this string line) 
        {
            try 
            { 
                return new Regex(@"\s*").Replace(line, " "); 
            } 
            catch (Exception) 
            { 
                return line; 
            }
        }
我认为这是错误的。
救命啊

你可以这样做-

System.Text.RegularExpressions.Regex.Replace(str,@"\s+"," ");
其中
str
是您的字符串。

这是

然而,答案是这样的(道克的功劳)

input=input.Replace(“\t”和“);
列表清空=新列表();
对于(int i=input.Length-1;i>1;i--)
{
字符串spcs=“”;

对于(int j=0;j)这不考虑制表符。我的想法完全正确。我确实读了那个问题,但它对我的特殊情况没有帮助!要点……应该教我更仔细地阅读这个问题,我读的是“多空格”而不是“空格”其中包括制表符等!抱歉,如果要多次执行此操作,您可能希望事先存储构造正则表达式对象。可以使用私有静态只读。这样,您就可以避免每次替换行时都创建正则表达式引擎。@Skurmedel:或者只使用内置的static
Regex.replace
方法。@LukeH:我想你没有领会我的意思。你可以预先构造正则表达式对象是有原因的,而不仅仅是为了便于重用。请看这里的“静态与实例方法”。当然,如果他/她在他的应用程序中不使用15个不同的正则表达式,可能没有问题。但我不知道他/她的应用程序。这就是我说“可能”的原因。静态方法缓存有限数量的最近使用的模式,因此,如果您知道应用程序在调用之间没有使用Regex执行任何其他操作,那么它是最佳的。如果您在库中执行此操作,您可能更喜欢自己的静态实例,以确保使用应用程序不会意外导致缓存丢失。我ally想接受这个作为我的答案,但它似乎不起作用。它只是不断抛出一个异常。另外,这只是一个一般性的问题;对于正则表达式,“\s”只是指空格吗?@New Start-你能告诉我错误是什么吗?我希望你使用的是正确的名称空间,对吗?@New Start-“\s”匹配空格字符。检查此-@New Start-我已经尝试过这个方法。效果很好。如果你能告诉我你的错误是什么,我可以帮助你。我使用了正确的名称空间,是的!我的问题是我返回了原始行而不是编辑的行。谢谢你的帮助!
Regex regex = new Regex(@"[ ]{2,}");     
tempo = regex.Replace(tempo, @" ");
input = input.Replace("\t", " ");

List<string> empties = new List<string>();
for (int i=input.Length - 1; i>1; i--)
{
    string spcs = "";
    for (int j=0; j<=i; j++)
        spcs += " ";
    if (input.Contains(spcs))
        empties.Add(spcs);
}

foreach (string s in empties)
    input = input.Replace(s, " ");