我想从字符串中删除最后三个字符:
string myString = "abcdxxx";
请注意,字符串是动态数据。
从字符串中读取最后 3 个字符 [最初提出的问题]
您可以使用string.Substring并为其指定起始索引,它将获取从给定索引开始到结束的子字符串。
myString.Substring(myString.Length-3)
从此实例中检索子字符串。子字符串从指定的字符位置开始。MSDN
编辑,更新帖子
从字符串中删除最后 3 个字符 [更新问题]
要从字符串中删除最后三个字符,您可以使用string.Substring(Int32, Int32)并将其起始索引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.Concat("hello".Reverse().Skip(3).Reverse());
输出:
"he"
myString.Remove(myString.Length-3);
新的 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
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
您可以使用String.Remove
从指定位置删除到字符串的末尾。
myString = myString.Remove(myString.Length - 3);
可能不完全是您要查找的内容,因为您说它是“动态数据”,但鉴于您的示例字符串,这也有效:
? "abcdxxx".TrimEnd('x');
"abc"
str= str.Remove(str.Length - 3);
myString.Substring(myString.Length - 3, 3)
以下是关于子字符串的示例。>>
http://www.dotnetperls.com/substring
参考那些。
string myString = "abcdxxx";
if (myString.Length<3)
return;
string newString=myString.Remove(myString.Length - 3, 3);
简单的。text = text.remove(text.length - 3)
. 我减去了 3,因为该Remove
函数将所有项目从该索引删除到字符串的末尾,即text.length
. 因此,如果我减去 3,那么我得到的字符串中删除了 3 个字符。
您可以将其概括为a
从字符串末尾删除字符,如下所示:
text = text.remove(text.length - a)
所以我做的是同样的逻辑。该remove
函数将所有项目从其内部删除到字符串的末尾,即文本的长度。因此,如果我从字符串的长度中减去a
,这将给我a
删除字符的字符串。
所以它不仅仅适用于 3,它适用于所有正整数,除非字符串的长度小于或等于a
,在这种情况下它将返回一个负数或 0。
从字符串中删除最后一个字符
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)
// 用于删除从索引 10 开始到结束的文本
items.Remove(items.Length - 3)
string.Remove()
从该索引中删除所有项目到最后。items.length - 3
从末尾获取索引 3 个字符
如果您使用 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