【问题标题】:Replace avenue and street with divisor regex using C#使用 C# 用除数正则表达式替换大道和街道
【发布时间】:2021-06-16 19:30:16
【问题描述】:

我有以下数据:

输入

10 AVE    2 ST
NORTH 100 AVE 5 TERR
S 39 AVE NW
S 39 AVE 1R
S 39 AVE  234 S

当发现文本“AVE”后跟一个或多个数字时,应添加正斜杠,如下所示:(并消除多余的空格)

输出

10 AVE / 2 ST
NORTH 100 AVE / 5 TERR
S 39 AVE NW
S 39 AVE 1R
S 39 AVE / 234 S

我有一些东西但不是很有效,因为它正在消除其他角色:

address = Regex.Replace(address.ToUpper(), @"AVE\s\d", "/");

提前感谢您的帮助。

【问题讨论】:

  • address = Regex.Replace(address.ToUpper(), @"\bAVE\s+([0-9]+)\b", "AVE / $1");

标签: c# regex c#-4.0 c#-3.0


【解决方案1】:

你可以使用

address = Regex.Replace(address.ToUpper(), @"(AVE)\s+(?=\d+\b)", "$1 / ");

请参阅regex demo。如果应该作为一个完整的单词匹配,则在AVE 之前添加\b

详情

  • (AVE) - AVE 被捕获到第 1 组 ($1)
  • \s+ - 一个或多个空格
  • (?=\d+\b) - 后面是一个或多个数字,后面是一个单词边界。

注意以下在结果方面是等价的:

Regex.Replace(address.ToUpper(), @"(?<=AVE)\s+(?=\d+\b)", " / ")
Regex.Replace(address.ToUpper(), @"AVE\s+(\d+)\b", "AVE / $1")

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多