获取子string – 某些字符之前的所有内容
我试图找出在string中的字符之前获取所有内容的最佳方法。 下面是一些示例string。 之前的string的长度 – 变化,可以是任何长度
223232-1.jpg 443-2.jpg 34443553-5.jpg
所以我需要从0的开始索引到之前的值。 所以子串会变成223232,443和34443553
.Net小提琴的例子
class Program { static void Main(string[] args) { Console.WriteLine("223232-1.jpg".GetUntilOrEmpty()); Console.WriteLine("443-2.jpg".GetUntilOrEmpty()); Console.WriteLine("34443553-5.jpg".GetUntilOrEmpty()); Console.ReadKey(); } } static class Helper { public static string GetUntilOrEmpty(this string text, string stopAt = "-") { if (!String.IsNullOrWhiteSpace(text)) { int charLocation = text.IndexOf(stopAt, StringComparison.Ordinal); if (charLocation > 0) { return text.Substring(0, charLocation); } } return String.Empty; } }
使用分割function。
static void Main(string[] args) { string s = "223232-1.jpg"; Console.WriteLine(s.Split('-')[0]); s = "443-2.jpg"; Console.WriteLine(s.Split('-')[0]); s = "34443553-5.jpg"; Console.WriteLine(s.Split('-')[0]); Console.ReadKey(); }
如果你的string没有-
那么你会得到整个string。
String str = "223232-1.jpg" int index = str.IndexOf('-'); if(index > 0) { return str.Substring(0, index) }
一种方法是将String.Substring
与String.IndexOf
一起使用:
int index = str.IndexOf('-'); string sub; if (index >= 0) { sub = str.Substring(0, index); } else { sub = ... // handle strings without the dash }
从位置0开始,将所有文本返回,但不包括短划线。
自这个线程开始以来,事情已经发生了一些变化。
现在,你可以使用
string.Concat(s.TakeWhile((c) => c != '-'));