我想从字符串中删除最后三个字符:
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)
返回一个新字符串,其中当前实例中从指定位置开始并持续到最后一个位置的所有字符都已被删除
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)
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)
新的 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)
myString.Remove(myString.Length-3);
Run Code Online (Sandbox Code Playgroud)
小智 6
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
Run Code Online (Sandbox Code Playgroud)
您可以使用String.Remove
从指定位置删除到字符串的末尾。
myString = myString.Remove(myString.Length - 3);
Run Code Online (Sandbox Code Playgroud)
可能不是您要查找的内容,因为您说它是“动态数据”,但鉴于您的示例字符串,这也有效:
? "abcdxxx".TrimEnd('x');
"abc"
Run Code Online (Sandbox Code Playgroud)