从字符串末尾对字符串进行子串

时间:2011-06-24 12:20:45

标签: c# .net

我需要从字符串的末尾删除两个字符。

所以:

string = "Hello Marco !"

必须是

Hello Marco

我该怎么做?

9 个答案:

答案 0 :(得分:37)

你可以这样做:

string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);

答案 1 :(得分:27)

s = s.Substring(0, Math.Max(0, s.Length - 2))

包括长度小于2的情况

答案 2 :(得分:7)

怎么样?
string s = "Hello Marco !";
s = s.Substring(0, s.Length - 2);

答案 3 :(得分:5)

C#8引入了索引和范围,使您可以编写

str[^2..]

这等效于

str.Substring(str.Length - 2, str.Length)

实际上,这几乎正是编译器将生成的内容,因此没有开销。

请注意,如果范围不在字符串内,您将获得ArgumentOutOfRangeException

答案 4 :(得分:3)

我会修剪不需要的字符的结尾:

s = s.TrimEnd(' ', '!');

确保即使有更多空间也能正常工作。或者更好的是,如果你想确保它始终有效,因为输入文本似乎来自用户:

Regex r = new Regex(@"(?'purged'(\w|\s)+\w)");
Match m = r.Match("Hello Marco   !!");
if (m.Success)
{
    string result = m.Groups["purged"].Value;
}

这样你就更安全了。基于必须删除最后两个字符这一事实的清除太弱了。

答案 5 :(得分:2)

您是否检查过MSDN文档(或IntelliSense)? String.Substring method怎么样?

您可以使用Length property获取长度,从中减去两个,并将子字符串从开头返回到结尾的2个字符。 例如:

string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);

答案 6 :(得分:2)

如果它是一个未知数量的字符串,你可以通过这样做来修剪掉最后一个字符 s = s.TrimEnd('','!')。Trim();

您是否考虑使用正则表达式?如果您只想允许使用字母数字字符,可以使用正则表达式替换符号,如果不是,请使用!你得到%?

答案 7 :(得分:1)

试试这个:

var s = "Hello Marco !";

var corrected = s.Substring(0, s.Length - 2);

答案 8 :(得分:1)

string s = "Hello Marco !";
s = s.Remove(s.length - 2, 2);