从字符串中删除特定单词

时间:2011-02-22 21:36:14

标签: c# regex

我正在尝试解析一个项目的街道名称文件,并需要删除修饰符(上/下/旧/新/北/东/南/西......)和结尾(街道/道路/方式) / lane ...),但我对正则表达式没什么好运。

目前设置的方式是程序将一次解析文件一行(即街道),并检查它

我认为问题是单词边界 - 例如我需要的是以下转换...
Old Harrow Way - > Harrow(即删除'Old'前缀和'Way'结尾)
Chittock Mead - > Chittock(删除结尾'Mead')
- 但是一言不发地留下这些: 金巷 - >黄金(只是删除结束)
Eastley Avenue - >东方(只是删除结束)
上西区大道 - >西方(删除前缀和结尾)

显然,像“南街”这样的东西会删除两者 - 这没关系,因为我可以丢弃一个空字符串。

任何人都可以告诉我如何做到这一点 - 我一直在阅读正则表达式并尝试几个小时!

3 个答案:

答案 0 :(得分:2)

我会使用<list>Array来存储这些值,然后使用foreach循环来检查列表或数组的地址。然后,您将使用.remove删除列表或数组项的每个实例。还有更多,但这是一般的想法。

答案 1 :(得分:2)

我会使用string.split(“”)将地址拆分为单词和数组。然后取第一个单词,看它存在于前缀列表中(即a或Array)。为最后一个单词和结尾做同样的事。

为每个输入地址运行两个reg-ex表达式列表将非常耗时。使用我的逻辑应该更快,特别是如果列表被排序和b搜索。

如果地址数据有点脏(即标点符号,双倍空格等),您可能需要进行一些清理,因为像“Main St”这样的输入字符串会比实际存在更多“单词”(提示:Trim()和RegEx.Replace(“”,“”))。

答案 2 :(得分:1)

This问题或this问题会对您有所帮助。确保使用Regex.Replace()方法进行模式匹配和替换。