【问题标题】:How to split a street address after the first number?如何在第一个数字之后拆分街道地址?
【发布时间】:2021-07-28 20:41:38
【问题描述】:

我不知道如何解决这个问题,但我需要将一个字符串分成两部分。以下面的字符串为例:

North Street 57A 1floor

我需要把它分成两部分。 第 1 部分“北街 57”和第 2 部分“A 1floor”

但是如果地址只是“North Street 57”那么我根本不需要拆分字符串,所以这里的关键是识别第一次出现的街道号码是数字还是数字的组合和字符 (57A)

我有很多不同的地址名称,因此文本可能会有所不同。这可以实现吗?

【问题讨论】:

  • 你有什么想法?什么没用?
  • 如果你有North Street 1floor?怎么办
  • 如果它是“North Street 1floor”,那么它应该是.. part 1 “North Street 1”和 part 2 “floor”
  • @Sinatr 我不知道如何检测第一次出现的数字是否也有字符,这是能够在正确位置拆分字符串的关键

标签: c# regex


【解决方案1】:

如果您总是想在第一次出现数字后进行拆分,您可以使用Regular Expression

这是一个完整的例子:

string input = "North Street 57A 1floor";
var regex = new Regex(@"(?<=\d)(?=\D)");
var parts = regex.Split(input, 2);
foreach (var part in parts)
    Console.WriteLine(part);

输出:

North Street 57
A 1floor

模式(?&lt;=\d)(?=\D) 获取位置一串数字之后。然后,我们使用Regex.Split(string input, int count) where count=2 确保它最多返回两个部分。

Try it online.

【讨论】:

  • @MTplus 我已经更新了模式,因为前一个模式将返回“North Street 57”的两个部分,其中第二部分是一个空字符串。现在已修复。请使用更新后的模式。
猜你喜欢
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多