是否有一种简单的方法来修剪字符串的最后三个字符?
本文关键字:最后 字符串 三个 修剪 字符 方法 一种 是否 简单 | 更新日期: 2023-09-27 18:05:13
我有这样的字符串:
var a = "abcdefg";
var b = "xxxxxxxx";
字符串总是大于5个字符。
现在我需要修剪掉最后3个字符。有一些简单的方法,我可以用c#做到这一点吗?
一般情况下可以直接使用
result = s.Substring(0, s.Length-3);
从字符串中删除最后三个字符。
或者如Jason所建议的Remove
是另一种选择:
result = s.Remove(s.Length-3)
遗憾的是,unicode字符串可能存在一些问题:
- 一个unicode码点可以由多个
char
组成,因为字符串的编码是UTF-16(参见代理对)。这只发生在基本平面之外的字符,即代码点>2^16的字符。如果你想支持中文,这是相关的。 - 字形(图形符号)可以由多个代码点组成。例如,
ä
可以写成a
后接¨
。 - 从右向左书写的行为可能也不是你想要的
你想要String.Remove(Int32)
删除字符串中从指定的字符开始的所有字符位置,并继续到最后一个位置。
如果您想按照druttka的回答执行验证,我建议创建一个扩展方法
public static class MyStringExtensions
{
public static string SafeRemove(this string s, int numCharactersToRemove)
{
if (numCharactersToRemove > s.Length)
{
throw new ArgumentException("numCharactersToRemove");
}
// other validation here
return s.Remove(s.Length - numCharactersToRemove);
}
}
var s = "123456";
var r = s.SafeRemove(3); //r = "123"
var t = s.SafeRemove(7); //throws ArgumentException
string a = "abcdefg";
a = a.Remove(a.Length - 3);
string newString = oldString.Substring(0, oldString.Length - 4);
如果你真的只需要剪掉最后3个字符,你可以这样做
string a = "abcdefg";
if (a.Length > 3)
{
a = a.Substring(0, a.Length-3);
}
else
{
a = String.Empty;
}