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

use*_*862 102 .net c#

我想从字符串中删除最后三个字符:

string myString = "abcdxxx"; 
Run Code Online (Sandbox Code Playgroud)

请注意,该字符串是动态数据.

Adi*_*dil 196

从字符串中读取最后3个字符[最初询问的问题]

你可以使用string.Substring并给它起始索引,它将获得从给定索引到结束的子字符串.

myString.Substring(myString.Length-3)
Run Code Online (Sandbox Code Playgroud)

从此实例中检索子字符串.子字符串从指定的字符位置开始.MSDN

编辑,更新帖子

从字符串中删除最后3个字符[更新的问题]

要从字符串中删除最后三个字符,可以使用string.Substring(Int32,Int32)并为其提供比字符串长度小3的起始索引0和结束索引.它将在最后三个字符之前获取子字符串.

myString = myString.Substring(0, myString.Length-3);
Run Code Online (Sandbox Code Playgroud)

String.Substring方法(Int32,Int32)

从此实例中检索子字符串.子字符串从指定的字符位置开始并具有指定的长度.

您还可以使用String.Remove(Int32)方法通过将起始索引作为length - 3来移除最后三个字符,它将从此点移除到字符串的结尾.

myString = myString.Remove(myString.Length-3)
Run Code Online (Sandbox Code Playgroud)

String.Remove方法(Int32)

返回一个新字符串,其中当前实例中从指定位置开始并持续到最后一个位置的所有字符都已被删除

  • 谢谢@braks,最初问的问题是"从字符串中读取最后3个字符"这是后来编辑的,我不知道,看到问题编辑历史.您的评论帮助我纠正了在编辑问题后出错的答案. (14认同)
  • 这不是答案 (11认同)
  • 在 C#8+ 中,您可以执行此操作 `myString[..^3]` (5认同)

Ale*_*lex 22

myString = myString.Remove(myString.Length - 3, 3);
Run Code Online (Sandbox Code Playgroud)


Byr*_*atz 11

我仔细阅读了所有这些,但想要更优雅的东西.只是从字符串末尾删除一定数量的字符:

string.Concat("hello".Reverse().Skip(3).Reverse());
Run Code Online (Sandbox Code Playgroud)

输出:

"he"
Run Code Online (Sandbox Code Playgroud)

  • 这个非常"有创意",因为它不需要字符串的长度,但反向操作可能更昂贵. (7认同)
  • 反转字符串肯定比计算字符数要贵.需要构造一个全新的字符串,然后将原始文件复制到它,然后原始字符串需要进行垃圾回收. (4认同)
  • 现在我们还有`.SkipLast(n)`。无需逆转任何事情。`"hello".SkipLast(3)` 给出 `"he"` (2认同)

Gra*_*ger 10

如果您使用 C# 8 或更高版本,则可以使用“ ranges ”:

string myString = "abcdxxx";
string trimmed = myString[..^3]; // "abcd"
Run Code Online (Sandbox Code Playgroud)

更多示例:

    string test = "0123456789", s;
    char c;
    c = test[^3]; // '7'
    s = test[0..^3]; // "0123456"
    s = test[..^3]; // "0123456"
    s = test[2..^3]; // "23456"
    s = test[2..7]; // "23456"
    //c = test[^12]; // IndexOutOfRangeException
    //s = test[8..^3]; // ArgumentOutOfRangeException
    s = test[7..^3]; // string.Empty
Run Code Online (Sandbox Code Playgroud)


vul*_*tyy 9

新的 C# 8.0 范围运算符是实现这一目标的绝佳捷径。

示例#1(回答问题):

string myString = "abcdxxx";
var shortenedString = myString[0..^3]
System.Console.WriteLine(shortenedString);
// Results: abcd
Run Code Online (Sandbox Code Playgroud)

示例#2(向您展示范围运算符有多棒):

string s = "FooBar99";
// If the last 2 characters of the string are 99 then change to 98
s = s[^2..] == "99" ? s[0..^2] + "98" : s;
System.Console.WriteLine(s);
// Results: FooBar98
Run Code Online (Sandbox Code Playgroud)


Ade*_*eel 8

myString.Remove(myString.Length-3);
Run Code Online (Sandbox Code Playgroud)

  • 即`myString = myString.Remove(myString.Length-3)`。 (2认同)

小智 6

string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
Run Code Online (Sandbox Code Playgroud)


lc.*_*lc. 5

您可以使用String.Remove从指定位置删除到字符串的末尾。

myString = myString.Remove(myString.Length - 3);
Run Code Online (Sandbox Code Playgroud)


Mik*_*ery 5

可能不是您要查找的内容,因为您说它是“动态数据”,但鉴于您的示例字符串,这也有效:

? "abcdxxx".TrimEnd('x');
"abc"
Run Code Online (Sandbox Code Playgroud)