想要获取最后一个逗号或最后一个管道之后的子字符串。所以说我有一个字符串可以是:" pipe | delimited | string"或者"逗号,分隔符,字符串",结果应为" string"在这两种情况下。
我在lastindexof上查看C#的子字符串,但我不知道如何为管道和逗号执行此操作。像这样:str.Substring(str.LastIndexOf(' |'或','))。有什么想法吗?
答案 0 :(得分:8)
有一个很好的功能。
str.LastIndexOfAny(new []{',','|'});
答案 1 :(得分:3)
您可以使用Split
方法,将一个或多个分隔符上的字符串拆分为数组,然后选择数组中的最后一项。由于它需要多个字符,因此在调用它时可以同时包含管道和逗号字符:
input.Split('|', ',').Last(); // Splits on both characters and returns the last "chunk"
例如:
private static void Main()
{
var input = "string|delimited|by|pipes";
Console.WriteLine(input.Split('|', ',').Last());
input = "string,delimited,by,commas";
Console.WriteLine(input.Split('|', ',').Last());
GetKeyFromUser("\nDone! Press any key to exit...");
}
<强>输出强>
答案 2 :(得分:0)
Split()
方法应该可以解决问题。关于它的唯一事情是它将同时使用两个分隔符,因此,例如,string,delimited|sequence
将变成一个看起来像{"string", "delimited", "sequence"}
的字符串数组。您可以在Microsoft: How to Parse Strings找到一些例子。这个可能是最相关的。
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo three:four,five six seven";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
答案 3 :(得分:-1)
尝试: (&#34;管|分隔|字符串&#34)拆分。(&#39; |&#39)。最后()