我正在(正好是第一次)使用正则表达式。
我的目标是拆分多个用“ /”分隔的街道名称。有一些特别的事情要注意。在“ /”之前和之后可能会有一个空格,在斜杠之后必须有一个字母而不是数字(因为有时门牌号也由斜杠分隔。
我差点存档目标。当前,当一个字符串中只有两个街道名称时,它会按我的意愿进行拆分,但是对于三个街道名称,我有问题(它只能拆分一次)。
我目前的两次正则表达式尝试如下:
为了清楚起见,我附上了一些屏幕截图:
在此屏幕截图中,我按照自己的意愿进行了拆分(但仅拆分了一次,而忽略了第三条街道)。
在第二张屏幕截图中,我添加了“?”在正则表达式的末尾。现在,它正在考虑第三条街,但在空白处切掉了第二条街。
希望你能帮助我。
答案 0 :(得分:0)
int z = 0;
string[] arr = new[]
{
"Street name 1 / Street name 2 / Street name 3",
"Street name 1 /Street name 2",
"Street name 1 / 2"
};
string pattern = @"(?i)\s*/\s*(?=[a-z])";
foreach (var x in arr)
{
WriteLine($"Record {++z}");
var streets = Regex.Split(x, pattern);
foreach (var street in streets)
{
WriteLine("\t" + street);
}
}
/*
Output:
Record 1
Street name 1
Street name 2
Street name 3
Record 2
Street name 1
Street name 2
Record 3
Street name 1 / 2
*/