我需要从字符串的末尾删除两个字符。
所以:
string = "Hello Marco !"
必须是
Hello Marco
我该怎么做?
答案 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);