C# 从字符串中删除单个空格

C# 从字符串中删除单个空格,c#,C#,假设我有这根绳子。如何仅从末端删除一个空格?下面显示的代码告诉我一个错误,计数超出范围 "How do I do this? " 您只需使用此选项即可: string s = "How do I do this? "; s = s.Remove(s.Length, 1); 如上所述: RemoveInt32返回一个新字符串,其中当前 实例,从指定位置开始,一直到 最后一个位置,已被删除 在数组中,位置的范围从0到长度-1,因此会出现编译器错

假设我有这根绳子。如何仅从末端删除一个空格?下面显示的代码告诉我一个错误,计数超出范围

"How do I do this?              "

您只需使用此选项即可:

string s = "How do I do this?              ";
s = s.Remove(s.Length, 1);
如上所述:

RemoveInt32返回一个新字符串,其中当前 实例,从指定位置开始,一直到 最后一个位置,已被删除


在数组中,位置的范围从0到长度-1,因此会出现编译器错误。

您只需使用此选项即可:

string s = "How do I do this?              ";
s = s.Remove(s.Length, 1);
如上所述:

RemoveInt32返回一个新字符串,其中当前 实例,从指定位置开始,一直到 最后一个位置,已被删除


在数组中,位置从0到长度-1不等,因此编译器会出错。

只需从第一个字符开始执行一个子字符串,字符在字符串中以0为基础,并将字符数减去字符串长度1即可

string s = "How do I do this?              ";
s = s.Remove(s.Length-1, 1);

只需从第一个字符开始执行一个子字符串,字符在字符串中以0为基础,并将字符数减去字符串长度1

string s = "How do I do this?              ";
s = s.Remove(s.Length-1, 1);

C中的索引是基于零的

s = s.Substring(0, s.Length - 1);

C中的索引是基于零的

s = s.Substring(0, s.Length - 1);

这样更安全一些,以防最后一个字符不是空格

s = s.Remove(s.Length - 1, 1);

这样更安全一些,以防最后一个字符不是空格

s = s.Remove(s.Length - 1, 1);

你必须写一些符合

string s = "How do I do this?              ";
s = Regex.Replace(s, @" $", "")

原因是,在C中,当引用数组中的索引时,第一个元素始终位于位置0,并以长度-1结束。长度通常会告诉您字符串的长度,但不会映射到实际数组索引

你必须在下面的行中写些东西

string s = "How do I do this?              ";
s = Regex.Replace(s, @" $", "")

原因是,在C中,当引用数组中的索引时,第一个元素始终位于位置0,并以长度-1结束。长度通常会告诉您字符串的长度,但不会映射到实际数组索引

另一种方法是

string s = "How do I do this?
s = s.Remove(s.Length-1, 1);
其他:

如果你想做一些额外的检查,最后一个字符是一个空格或任何东西,你可以这样做

string s = "How do I do this?              ";
s=s.SubString(0,s.Length-1);
这将为您提供一个MessageBox,其中包含一封信

还有一件事可能会很有帮助,如果您想创建一个每个单词之间有相等数量空格的字符串,那么您可以试试这个

    string s = "How do I do this?              a";//Just for example,i've added a 'a' at the end.
    int index = s.Length - 1;//Get last Char index.
    if (index > 0)//If index exists.
    {
        if (s[index] == ' ')//If the character at 'index' is a space.
        {
            MessageBox.Show("Its a space.");
        }
        else if (char.IsLetter(s[index]))//If the character at 'index' is a letter.
        {
            MessageBox.Show("Its a letter.");
        }
        else if(char.IsDigit(s[index]))//If the character at 'index' is a digit.
        {
            MessageBox.Show("Its a digit.");
        }
    }
这让你知道我该怎么做?单词之间的空格相等


另一种方法是

string s = "How do I do this?
s = s.Remove(s.Length-1, 1);
其他:

如果你想做一些额外的检查,最后一个字符是一个空格或任何东西,你可以这样做

string s = "How do I do this?              ";
s=s.SubString(0,s.Length-1);
这将为您提供一个MessageBox,其中包含一封信

还有一件事可能会很有帮助,如果您想创建一个每个单词之间有相等数量空格的字符串,那么您可以试试这个

    string s = "How do I do this?              a";//Just for example,i've added a 'a' at the end.
    int index = s.Length - 1;//Get last Char index.
    if (index > 0)//If index exists.
    {
        if (s[index] == ' ')//If the character at 'index' is a space.
        {
            MessageBox.Show("Its a space.");
        }
        else if (char.IsLetter(s[index]))//If the character at 'index' is a letter.
        {
            MessageBox.Show("Its a letter.");
        }
        else if(char.IsDigit(s[index]))//If the character at 'index' is a digit.
        {
            MessageBox.Show("Its a digit.");
        }
    }
这让你知道我该怎么做?单词之间的空格相等



数组索引和索引字符串在c中是基于0的,因此s.Length指的是比数组的最大索引多1的位置。使用s.Length-1我不想将此作为答案发布,因为我认为其他答案更好,但必须使用linq。。。。s=s.Takes.Length-1.ToString;旁注:如果要删除到最后,则不需要第二个参数。@说这不会像您认为的那样。像newstrings.Takes.Length-1.ToArray这样的东西可以工作,但这不是一个好主意idea@hvd-我知道这不是,但这不是一个没有Linq答案的问题:P大多数时候,我都懒得去测试它,所以是的,你的版本可能达到了我的预期,数组索引,因此索引字符串是基于c的0,所以s.Length指的是比数组的最大索引大1的位置。使用s.Length-1我不想将此作为答案发布,因为我认为其他答案更好,但必须使用linq。。。。s=s.Takes.Length-1.ToString;旁注:如果要删除到最后,则不需要第二个参数。@说这不会像您认为的那样。像newstrings.Takes.Length-1.ToArray这样的东西可以工作,但这不是一个好主意idea@hvd-我知道这不是,但这不是一个没有答案的问题,我没有费心去测试它,所以是的,你的版本可能达到了我的预期。如果使用正则表达式的全部目的是避免替换不是空格的字符,那么为什么你的正则表达式会匹配空格以外的字符呢?正则表达式在这方面可能太过分了inefficient@hvd它匹配一个空格,后跟一个行尾,可能您正在考虑与非空白匹配的\Scharacter@RobertByrne不,我不是这么想的。我的意思是\s匹配任何空格字符,而不仅仅是空格。@说我从来没有发现简单的正则表达式在总体方案中是一个性能问题,但如果使用正则表达式的全部目的是避免替换不是空格的字符,则这完全取决于使用情况,为什么您的正则表达式与空格以外的字符匹配?正则表达式在这里可能是非常过分的inefficient@h
vd它匹配一个空格,后跟一个行尾,可能您正在考虑\S哪个匹配非空白character@RobertByrne不,我不是这么想的。我的意思是\s匹配任何空格字符,而不仅仅是空格。@说我从来没有发现简单的正则表达式在总体方案中是一个性能问题,但这完全取决于用例的公平性。顺便说一句,这是string.Removes.Length-1内部使用的,但只有在使用startIndex.Btw时,这是string.Removes.Length-1在内部使用的,但仅当您使用startIndex时。