Trim() 和 Replace(" ", "") 在 C# 中不删除白色 space

Trim() and Replace(" ", "") not removing white space in C#

我正在尝试将“文本”写入文件

private void WriteToLogs(string text)
    {
        File.AppendAllText(todayMessageLog, $"({DateTime.Now}) Server Page: \"{text.Trim()}\"\n");
    }

文字是这样的: “文字(一串白色space)”

文本字符串由以下组成:

string username = e.NewClientUsername.Trim().Replace(" ", "");
string ip = e.NewClientIP.Trim().Replace(" ", "");

WriteToLogs($"{username.Trim().Replace(" ", "")} ({ip.Trim().Replace(" ", "")}) connected"); // NONE OF THESE WORKED FOR REMOVING THE WHITE SPACE

“e”参数来自另一个名称的自定义 EventArgs classspace,NewClientIP 和 NewClientUsername 是 class

中的属性

如您所见,我尝试在字符串本身和方法上同时使用 Trim 和 Replace,但没有删除白色 space.

我希望这对你有用

using System;
using System.Text.RegularExpressions;
                    
public class Program
{
    public static void Main()
    {
    //This is your text 
    string input = "This is   text with   far  too   much   "+
        "This is   text with   far  too   much   "+
        "This is   text with   far  too   much   ";
        
      //This is the Regex
      string pattern = "\s";
        
      //Value with the replace
      string replacement = "";
        
      //Replace 
      string result = Regex.Replace(input, pattern, replacement);
      
      //Result
      Console.WriteLine("Original String: {0}", input);
      Console.WriteLine("Replacement String: {0}", result);         
    }
}

如果 Trim()Replace() 方法不起作用,则字符串可能没有用 SPACE 或 TAB 等通常的白色 space 字符填充,但是别的东西。还有很多其他字符可以显示为空白。

尝试使用类似 BitConverter.ToString(Text.Encoding.UTF8.GetBytes(text)) 的方式打印结果。空格会显示为 20-20-20-...,但您可能会得到其他内容。


The white space shows up as 00, not 20, how can I remove it?

很好。使用 Trim() 方法的参数,如下所示:

var text = "Blah[=10=][=10=][=10=][=10=]";
text.Length            → 8
text.Trim('[=10=]').Length → 4

如果你想trim白spaces(不仅' ',还有\t\U00A0等)以及[=16=](也就是不是白space),可以试试正则表达式 :

using System.Text.RegularExpressions;

...

// Trim whitespaces and [=10=]
string result = Regex.Replace(input, @"(^[\s[=10=]]+)|([\s[=10=]]+$)", "");

供参考

// Trim start whitespaces and [=11=]
string resultStart = Regex.Replace(input, @"^[\s[=11=]]+", "");

// Trim end whitespaces and [=11=]
string resultEnd = Regex.Replace(input, @"[\s[=11=]]+$", "");

相同的想法(正则表达式),但如果你不想 trimremove white spaces 和 [=16=]:

string result = Regex.Replace(input, @"[\s[=12=]]+", "");