【发布时间】:2011-06-24 12:20:44
【问题描述】:
我需要从字符串末尾删除两个字符。
所以:
string = "Hello Marco !"
必须
Hello Marco
我该怎么做?
【问题讨论】:
我需要从字符串末尾删除两个字符。
所以:
string = "Hello Marco !"
必须
Hello Marco
我该怎么做?
【问题讨论】:
你可以这样做:
string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);
【讨论】:
s = s.Substring(0, Math.Max(0, s.Length - 2))
包括长度小于2的情况
【讨论】:
C# 8 引入了允许您编写的索引和范围
str[^2..]
这相当于
str.Substring(str.Length - 2, 2)
事实上,这几乎就是编译器会生成的,所以没有开销。
请注意,如果范围不在字符串内,您将获得ArgumentOutOfRangeException。
【讨论】:
str[..^2]。 2 甚至不需要是常数,所以也可以写成str[..^"test".Length]
怎么样
string s = "Hello Marco !";
s = s.Substring(0, s.Length - 2);
【讨论】:
我会为不需要的字符修剪结尾:
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;
}
这样你就更安全了。基于必须删除最后两个字符这一事实的清除太弱了。
【讨论】:
您是否查看了 MSDN 文档(或 IntelliSense)? String.Substring method 怎么样?
您可以使用Length property 获取长度,从中减去两个,然后将子字符串从开头返回到结尾的 2 个字符。
例如:
string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);
【讨论】:
如果是未知数量的字符串,您可以通过以下方式修剪最后一个字符 s = s.TrimEnd('','!').Trim();
您是否考虑过使用正则表达式?如果您只想允许字母数字字符,您可以使用正则表达式替换符号,如果不是 !你得到一个 %?
【讨论】:
试试这个:
var s = "Hello Marco !";
var corrected = s.Substring(0, s.Length - 2);
【讨论】:
string s = "Hello Marco !";
s = s.Remove(s.length - 2, 2);
【讨论】: