我想从一个字符串中删除最后三个字符:
string myString = "abcdxxx";
请注意该字符串是动态数据。
myString.Substring(myString.Length-3)
0
和结束索引小于字符串长度三个字符。它将获取最后三个字符之前的子字符串。myString = myString.Substring(0, myString.Length-3);
String.Substring 方法 (Int32, Int32)
从此实例检索子字符串。子字符串从指定的字符位置开始,并具有指定的长度。
您还可以使用 String.Remove(Int32) 方法,通过将起始索引设置为 length - 3 来删除最后三个字符,它将从该点开始一直删除到字符串结尾。
myString = myString.Remove(myString.Length-3)
返回一个新字符串,其中当前实例中从指定位置开始并继续到最后位置的所有字符都已被删除
myString = myString.Remove(myString.Length - 3, 3);
string.Remove(3)
可以解决问题(或者可能从字符串开头删除三个字符),但是在阅读重载描述后,人们意识到它并不能实现。 - Stewartstring.Concat("hello".Reverse().Skip(3).Reverse());
输出:
"he"
Length
。 - Wolfzoon.SkipLast(n)
。不需要反转任何内容。"hello".SkipLast(3)
会得到"he"
。 - Ajit Panigrahi新的C# 8.0范围运算符可以成为一个很好的快捷方式来实现这一点。
示例1(回答问题):
使用新的C# 8.0范围运算符可以轻松解决此问题。
示例1(回答问题):
string myString = "abcdxxx";
var shortenedString = myString[0..^3]
System.Console.WriteLine(shortenedString);
// Results: abcd
示例 #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
myString.Remove(myString.Length-3);
myString = myString.Remove(myString.Length - 3)
这行代码的意思是删除字符串myString
末尾的三个字符。 - A-Sharabiani如果你在使用C# 8或更高版本,你可以使用“ranges”:
string myString = "abcdxxx";
string trimmed = myString[..^3]; // "abcd"
更多示例:
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
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
由于您提到它是“动态数据”,所以这可能不是完全符合您要求的,但考虑到您的示例字符串,以下代码也可以起作用:
? "abcdxxx".TrimEnd('x');
"abc"
很简单。 text = text.remove(text.length - 3)
。 我减去了3,因为Remove
函数从那个索引开始删除到字符串的末尾,即text.length
。因此,如果我减去3,就可以得到删除了3个字符的字符串。
您可以将其推广到从字符串末尾删除a
个字符,如下所示:
text = text.remove(text.length - a)
remove
会将其内部到字符串末尾的所有项删除,即文本长度。因此,如果我从字符串长度中减去a
,就可以得到已删除a
个字符的字符串。a
,则会返回负数或0。
myString[..^3]
完成此操作。 - Granger