是否有一种简单的方法来修剪字符串的最后三个字符

时间:2011-08-09 14:38:26

标签: c#

我有这样的字符串:

var a = "abcdefg";
var b = "xxxxxxxx";

字符串总是超过五个字符。

现在我需要修剪最后3个字符。有没有一些简单的方法可以用C#做​​到这一点?

5 个答案:

答案 0 :(得分:11)

在琐碎的情况下,你可以使用

result = s.Substring(0, s.Length-3);

从字符串中删除最后三个字符。

或者Jason建议Remove是另一种选择:

result = s.Remove(s.Length-3)

不幸的是,对于unicode字符串,可能存在一些问题:

  • unicode代码点可以包含多个char,因为字符串的编码是UTF-16(参见代理对)。这仅发生在基本平面之外的字符,即具有代码点> 2 ^ 16的字符。如果您想支持中文,这是相关的。
  • 字形(图形符号)可以包含多个代码点。例如,ä可以写为a,后跟合并¨
  • 从右到左书写的行为可能不是您想要的

答案 1 :(得分:4)

您需要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

答案 2 :(得分:2)

string a = "abcdefg";
a = a.Remove(a.Length - 3);

答案 3 :(得分:1)

string newString = oldString.Substring(0, oldString.Length - 4);

答案 4 :(得分:0)

如果你真的只需要剪掉最后3个字符,你可以这样做

string a = "abcdefg";
if (a.Length > 3)
{
  a = a.Substring(0, a.Length-3);
}
else
{
  a = String.Empty;
}