一个简单的代码段如下:
public static void Main()
{
string str = "IsRecorded<code>0</code>";
str = str.TrimEnd("<code>0</code>".ToCharArray());
Console.WriteLine(str);
}
我得到的输出字符串是IsRecor
。为什么TrimEnd
函数应该从字符串中剥离ded
,而只应该剥离<code>0</code>
。同样,如果我将str
减小为IsRec
,那么它会给出IsR
作为输出。为什么会这样呢?
答案 0 :(得分:6)
TrimEnd
的参数指定要修剪的字符集。并非要修剪后缀 。
因此,您要修剪{ '<', 'c', 'o', 'd', 'e', '>', '0', '/' }
中的任何字符。字母“ ded”都在该集合中,因此已被修剪。
如果要删除后缀,请不要使用TrimEnd
。使用类似这样的内容:
public static string RemoveSuffix(string input, string suffix) =>
input.EndsWith(suffix, StringComparison.Ordinal)
? input.Substring(0, input.Length - suffix.Length)
: input;
(字符串比较部分对于避免在某些情况下“引起有趣的”文化特定效果非常重要。它基本上会进行最简单的匹配。)
答案 1 :(得分:1)
您可以使用.LastIndexOf() & Remove()
删除结尾的字符串
string str = "IsRecorded<code>0</code>";
str = str.Remove(str.LastIndexOf("<code>0</code>"));
.LastIndexOf(string param):这将找到最后一次出现的索引 指定的字符串。
.Remove(int startIndex):从给定索引中删除字符串
答案 2 :(得分:0)
尝试以下方法:
string str = "IsRecorded<code>0</code>";
str = str.Substring(0, str.IndexOf("<code>0</code>"));
Console.WriteLine(str);
答案 3 :(得分:0)
另一个解决方案可能是:
for d in data:
author, title, date = d['author'], d['title'], d['year']
print( f'{author} wrote "{title}" in {year}')
PS:我知道不会只修剪末端部分,但是如果这不是问题,那么可以使用