C# 如何在拆分字符串后精确修剪1个空格

C# 如何在拆分字符串后精确修剪1个空格,c#,string,split,trim,C#,String,Split,Trim,我制作了一个程序,通过在管道上拆分字符串来计算字符串,字符串是随机生成的,有时需要计算的部分是空格 HftiVfzRIDBeotsnU uabjvLPC | LSTHCFOUOBTV eVzDUBPn jIRfai 这个字符串的两边长度相同(管道左侧有2倍的空格),但我的问题出现在我必须修剪管道两侧的空格时(我在拆分后执行此操作) 有没有办法确保我只修剪一个空格而不是全部。 到目前为止,我的代码是: foreach (string s in str) { int bugC

我制作了一个程序,通过在管道上拆分字符串来计算字符串,字符串是随机生成的,有时需要计算的部分是空格

HftiVfzRIDBeotsnU uabjvLPC | LSTHCFOUOBTV eVzDUBPn jIRfai

这个字符串的两边长度相同(管道左侧有2倍的空格),但我的问题出现在我必须修剪管道两侧的空格时(我在拆分后执行此操作) 有没有办法确保我只修剪一个空格而不是全部。 到目前为止,我的代码是:

foreach (string s in str)
    {
        int bugCount = 0;
        string[] info = s.Split('|');
        string testCase = info[0].TrimEnd();
        char[] testArr = testCase.ToCharArray();
        string debugInfo = info[1].TrimStart();
        char[] debugArr = debugInfo.ToCharArray();
        int arrBound = debugArr.Count();
        for (int i = 0; i < arrBound; i++)
            if (testArr[i] != debugArr[i])
                bugCount++;
        if (bugCount <= 2 && bugCount != 0)
            Console.WriteLine("Low");
        if (bugCount <= 4 && bugCount != 0)
            Console.WriteLine("Medium");
        if (bugCount <= 6 && bugCount != 0)
            Console.WriteLine("High");
        if (bugCount > 6)
            Console.WriteLine("Critical");
        else 
            Console.WriteLine("Done");

    }
    Console.ReadLine();
foreach(str中的字符串s)
{
整数错误计数=0;
字符串[]信息=s.Split(“|”);
字符串testCase=info[0].TrimEnd();
char[]testArr=testCase.ToCharArray();
字符串debugInfo=info[1].TrimStart();
char[]debugArr=debugInfo.ToCharArray();
int arrbind=debugArr.Count();
for(int i=0;i如果(bugCount没有办法告诉
Trim..
methods系列在删除一些字符后停止

在一般情况下,您需要手动执行此操作,方法是检查分割后获得的零件,并检查其第一个/最后一个字符和子字符串以获得正确的零件

但是,在您的情况下,有一种更简单的方法-拆分还可以将
字符串
作为参数,甚至更多-一组字符串:

string[] info = s.Split(new []{ " | " });
// or even
string[] info = s.Split(new []{ " | ", " |", "| ", "|" });

只需将管道
|
字符周围的单个空格作为分隔符的一部分来处理。

没有办法告诉
修剪..
方法系列在删除一些字符后停止

在一般情况下,您需要手动执行此操作,方法是检查分割后获得的零件,并检查其第一个/最后一个字符和子字符串以获得正确的零件

但是,在您的情况下,有一种更简单的方法-拆分还可以将
字符串
作为参数,甚至更多-一组字符串:

string[] info = s.Split(new []{ " | " });
// or even
string[] info = s.Split(new []{ " | ", " |", "| ", "|" });
只需将管道周围的单个空格作为分隔符的一部分,就可以处理它们。

您有两个选项

  • 如果管道前后始终有1个空格,请在
    {space}{space}
    上拆分

    myInput.Split(new[]{" | "},StringSplitOptions.None);
    
  • 否则,不要使用
    TrimStart()
    &
    trimsend()
    使用
    SubString

    var split = myInput.Split('|');
    var s1 = split[0].EndsWith(" ") 
                     ? split[0].SubString(0,split[0].Length-1) 
                     : split[0];
    var s2 = split[1].StartsWith(" ")
                     ? split[1].SubString(1) // to end of line
                     : split[1];
    
  • 请注意,这里有一些复杂性-如果管道周围没有空格,但最后/第一个字符是合法的(数据)空格字符,上面的字符会将其截断。您需要更多的逻辑,但希望这能让您开始!

    您有2个选项

  • 如果管道前后始终有1个空格,请在
    {space}{space}
    上拆分

    myInput.Split(new[]{" | "},StringSplitOptions.None);
    
  • 否则,不要使用
    TrimStart()
    &
    trimsend()
    使用
    SubString

    var split = myInput.Split('|');
    var s1 = split[0].EndsWith(" ") 
                     ? split[0].SubString(0,split[0].Length-1) 
                     : split[0];
    var s2 = split[1].StartsWith(" ")
                     ? split[1].SubString(1) // to end of line
                     : split[1];
    

  • 请注意,这里有一些复杂性-如果管道周围没有空格,但最后/第一个字符是合法的(数据)空格字符,则上述字符会将其截断。您需要更多的逻辑,但希望这会让您开始!

    这是一个字符串扩展,用于修剪计数时间的空格,以防万一

    public static class StringExtension
    {
        /// <summary>
        /// Trim space at the end of string for count times
        /// </summary>
        /// <param name="input"></param>
        /// <param name="count">number of space at the end to trim</param>
        /// <returns></returns>
        public static string TrimEnd(this string input, int count = 1)
        {
            string result = input;
            if (count <= 0)
            {
                return result;
            }
            if (result.EndsWith(new string(' ', count)))
            {
                result = result.Substring(0, result.Length - count);
            }
            return result;
        }
        /// <summary>
        /// Trim space at the start of string for count times
        /// </summary>
        /// <param name="input"></param>
        /// <param name="count">number of space at the start to trim</param>
        /// <returns></returns>
        public static string TrimStart(this string input, int count = 1)
        {
            string result = input;
            if (count <= 0)
            {
                return result;
            }
            if (result.StartsWith(new string(' ', count)))
            {
                result = result.Substring(count);
            }
            return result;
        }
    }
    

    这是一个字符串扩展,用于修剪计数时间的空间,以防万一

    public static class StringExtension
    {
        /// <summary>
        /// Trim space at the end of string for count times
        /// </summary>
        /// <param name="input"></param>
        /// <param name="count">number of space at the end to trim</param>
        /// <returns></returns>
        public static string TrimEnd(this string input, int count = 1)
        {
            string result = input;
            if (count <= 0)
            {
                return result;
            }
            if (result.EndsWith(new string(' ', count)))
            {
                result = result.Substring(0, result.Length - count);
            }
            return result;
        }
        /// <summary>
        /// Trim space at the start of string for count times
        /// </summary>
        /// <param name="input"></param>
        /// <param name="count">number of space at the start to trim</param>
        /// <returns></returns>
        public static string TrimStart(this string input, int count = 1)
        {
            string result = input;
            if (count <= 0)
            {
                return result;
            }
            if (result.StartsWith(new string(' ', count)))
            {
                result = result.Substring(count);
            }
            return result;
        }
    }
    

    如果要清除管道符号前后的空格,请使用
    TrimStart
    trimsend
    假设您在
    |
    上拆分,只需将字符串的子字符串从[1]取到[len-1]?你能显示代码生成的结果和想要的结果吗?我不明白
    TrimEnd
    TrimStart
    怎么会在这里引起问题。@sharpstudent如果在string@Sinatr如果您想使用c,我希望在第1节中实际数据的末尾或第2节中实际数据的开头有一个空格清除管道符号前后的空格,然后使用
    TrimStart
    trimsend
    假设您在
    |
    上拆分,只需将字符串的子字符串从[1]取到[len-1]?你能显示代码生成的结果和想要的结果吗?我不明白
    TrimEnd
    TrimStart
    怎么会在这里引起问题。@sharpstudent如果在string@Sinatr当空格位于第1节中实际数据的末尾或第2节中实际数据的开头时,我认为是的,我同意我只认为我可以在一个字符上拆分,这在很多方面都有帮助。是的,我同意。我只认为我可以在一个字符上拆分,这在很多方面都有帮助。似乎我误解了什么,当我尝试使用方法1时,我得到了“无法从”字符串转换[]'至'char'@Claudi-见更新,我忘了你需要传递
    StringSplitOptions
    似乎我误解了什么,当我尝试使用方法1时,我得到“无法从'string[]转换为'char'@Claudi-见更新,我忘了你需要传递
    StringSplitOptions