从字符串末尾派生字符串
本文关键字:字符串 派生 | 更新日期: 2023-09-27 18:00:09
我需要从字符串末尾删除两个字符。
因此:
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
。
怎么样
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
属性获取长度,从中减去2,然后返回从开始到结束的2个字符的子字符串。例如:
string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);
如果字符串数量未知,您可以通过执行s=s.TrimEnd('','!').Trim();
你考虑过使用正则表达式吗?如果您只想允许使用字母数字字符,您可以使用regex来替换符号,What-If而不是!你得到了%?
试试这个:
var s = "Hello Marco !";
var corrected = s.Substring(0, s.Length - 2);
string s = "Hello Marco !";
s = s.Remove(s.length - 2, 2);