如何在第一个数字之后拆分街道地址?

Posted

技术标签:

【中文标题】如何在第一个数字之后拆分街道地址?【英文标题】: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 我不知道如何检测第一次出现的数字是否也有字符,这是能够在正确位置拆分字符串的关键 【参考方案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”的两个部分,其中第二部分是一个空字符串。现在已修复。请使用更新后的模式。

以上是关于如何在第一个数字之后拆分街道地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pl/sql 中将街道值拆分为原子?

在 SQL 请求中,如何查找字符串最后一部分中包含数字的所有记录(最后一个空格之后)

如何在第一个逗号后拆分第一个竖线上的字符串?

微信小程序中如何实现省市区街道四级地址级联选择

从地址中如何提取或者识别街道?支持模糊地址

从地址中如何提取或者识别街道?支持模糊地址