我想使用类中的Split
函数拆分字符串Regex
.问题是它删除了分隔符,我想保留它们.优选地作为分裂中的单独元件.
根据我发现的其他讨论,只有不方便的方法来实现这一点.
有什么建议?
Mar*_*rot 64
只需将模式放入捕获组,匹配也将包含在结果中.
string[] result = Regex.Split("123.456.789", @"(\.)");
Run Code Online (Sandbox Code Playgroud)
结果:
{ "123", ".", "456", ".", "789" }
Run Code Online (Sandbox Code Playgroud)
这也适用于许多其他语言:
"123.456.789".split(/(\.)/g)
re.split(r"(\.)", "123.456.789")
split(/(\.)/g, "123.456.789")
(虽然不是Java)
使用Matches
查找字符串中的分隔符,然后得到的值和分隔符.
例:
string input = "asdf,asdf;asdf.asdf,asdf,asdf";
var values = new List<string>();
int pos = 0;
foreach (Match m in Regex.Matches(input, "[,.;]")) {
values.Add(input.Substring(pos, m.Index - pos));
values.Add(m.Value);
pos = m.Index + m.Length;
}
values.Add(input.Substring(pos));
Run Code Online (Sandbox Code Playgroud)