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

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

所以:

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的情况

关于什么

 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方法怎么样?

您可以使用Length属性获取Length ,从中减去2,并从末尾将子字符串返回到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);