我想使用Regex
类中的 Split
函数来拆分字符串。问题是它 移除 了分隔符,而我想保留它们,最好作为 splitee 中单独的元素。
根据我找到的其他讨论,目前只有不方便的方法可以实现这一点。
有任何建议吗?
我想使用Regex
类中的 Split
函数来拆分字符串。问题是它 移除 了分隔符,而我想保留它们,最好作为 splitee 中单独的元素。
根据我找到的其他讨论,目前只有不方便的方法可以实现这一点。
有任何建议吗?
string[] result = Regex.Split("123.456.789", @"(\.)");
结果:
{ "123", ".", "456", ".", "789" }
这也适用于许多其他语言:
"123.456.789".split(/(\.)/g)
re.split(r"(\.)", "123.456.789")
split(/(\.)/g, "123.456.789")
(不适用于Java)
(?=([A-Z]))
将同时创建一个带有字母的额外项并将其包含在下一个项中。 - Markus JarderotMatches
查找字符串中的分隔符,然后获取值和分隔符。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));
String input = "abc1defg2hi3jkl";
var parts = Regex.Matches(input, @"\d+|\D+")
.Cast<Match>()
.Select(m => m.Value)
.ToList();
需要翻译的内容为: 部件将是:abc
1
defg
2
hi
3
jkl
对于Java:
Arrays.stream("123.456.789".split("(?<=\\.)|(?=\\.)+"))
.forEach((p) -> {
System.out.println(p);
});
输出:
123
.
456
.
789
受此帖子的启发 (如何在Java中拆分字符串但保留分隔符?)
针对C#: 将段落按保留分隔符拆分为句子 句子由.或?或!后跟一个空格拆分(否则,如果句子中有任何电子邮件ID,则会被拆分)
string data="first. second! third? ";
Regex delimiter = new Regex("(?<=[.?!] )"); //there is a space between ] and )
string[] afterRegex=delimiter.Split(data);
结果
first. second! third?
string[] Parts = "A,B,C,D,E".Split(',');
string[] Parts2 = new string[Parts.Length * 2 - 1];
for (int i = 0; i < Parts.Length; i++)
{
Parts2[i * 2] = Parts[i];
if (i < Parts.Length - 1)
Parts2[i * 2 + 1] = ",";
}