如何获取字符之前的字符串"-"
使用正则表达式?
例如,我有"text-1"
我想回来"text"
.
所以我看到了实现这一目标的许多可能性。
string text = "Foobar-test";
-
正则表达式 匹配所有内容,直到第一个“-”
Match result = Regex.Match(text, @"^.*?(?=-)");
-
^
从字符串的开头开始匹配
-
.*?
匹配任意字符 (.
),零次或多次(*
)但尽可能少(?
)
-
(?=-)
直到下一个字符是“-”(这是积极的展望)
-
正则表达式 匹配字符串开头不是“-”的任何内容
Match result2 = Regex.Match(text, @"^[^-]*");
-
正则表达式 匹配从字符串开头到“-”的任何非“-”的内容
Match result21 = Regex.Match(text, @"^([^-]*)-");
仅当字符串中存在破折号时才匹配,但结果会在捕获组 1 中找到。
-
按“-”分开
string[] result3 = text.Split('-');
结果是一个数组,第一个“-”之前的部分是数组中的第一项
-
子串直到第一个“-”
string result4 = text.Substring(0, text.IndexOf("-"));
获取文本中从开头到第一次出现“-”的子字符串(text.IndexOf("-")
)
然后你就得到了所有的结果(都一样)
Console.WriteLine(result);
Console.WriteLine(result2);
Console.WriteLine(result21.Groups[1]);
Console.WriteLine(result3[0]);
Console.WriteLine(result4);
我更喜欢第一种方法。
当字符串中没有破折号时,您还需要考虑行为。在这种情况下,第四种方法将抛出异常,因为text.IndexOf("-")
将-1
。方法 1 和 2.1 将不返回任何内容,方法 2 和 3 将返回完整的字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)