C# 从字符串末尾开始为字符串添加子字符串

C# 从字符串末尾开始为字符串添加子字符串,c#,.net,C#,.net,我需要从字符串末尾删除两个字符 因此: 一定是 Hello Marco 我怎么做呢?怎么样 string s = "Hello Marco !"; s = s.Substring(0, s.Length - 2); 试试这个: var s = "Hello Marco !"; var corrected = s.Substring(0, s.Length - 2); 您是否查看了MSDN文档(或IntelliSense)?这辆车怎么样 可以使用获取长度,从中减去2,然后将子字符串从开头返

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

因此:

一定是

Hello Marco
我怎么做呢?

怎么样

string s = "Hello Marco !";
s = s.Substring(0, s.Length - 2);
试试这个:

var s = "Hello Marco !";

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

您是否查看了MSDN文档(或IntelliSense)?这辆车怎么样

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

string str = "Hello Marco !";
str = str.Substring(0, str.Length - 2);
要包括长度小于2的情况,可以执行以下操作:

string str = "Hello Marco !";
str = str.Substring(0, str.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;
}

这样你会更安全。基于必须删除最后两个字符的清除太弱。

如果字符串数量未知,可以通过 s=s.TrimEnd(“”,!”).Trim()

你考虑过使用正则表达式吗?如果您只想允许字母数字字符,那么可以使用正则表达式替换符号,而不是使用!你得到了一个%?

C#8引入的索引和范围,允许你写

str[^2..]
这相当于

str.Substring(str.Length - 2, str.Length)
事实上,这几乎就是编译器将生成的内容,因此没有开销


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

这只得到最后两个字符。@哎呀,是的,我本来打算删除,但习惯上做了子字符串。@Armen-这也不是问题,是吗?;)@Alexander我不知道你在说什么语言,但在.NETC#中,这是一种有效的方法。这也是恰当的情况。非常抱歉,我没有注意到有人提到c#。我只是在寻找方法签名,发现了这个:)这解决了OP的问题,但它实际上并没有回答如何从字符串末尾运行子字符串的问题。你的答案从字符串的末尾删去了两个字母。@Maritim OP的问题有点让人困惑,但他的解释说,我引用了“我需要从字符串的末尾删除两个字符”。9年后,我迟到了一天:)这是现代C#的正确解决方案,即使这是我真正想要的,问题需要的是前n-2个字符,而不是最后2个字符。
Regex r = new Regex(@"(?'purged'(\w|\s)+\w)");
Match m = r.Match("Hello Marco   !!");
if (m.Success)
{
    string result = m.Groups["purged"].Value;
}
str[^2..]
str.Substring(str.Length - 2, str.Length)