gpt4 book ai didi

c# - N-S 和 E-W 格式的纬度/经度正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 23:35:29 25 4
gpt4 key购买 nike

我问的问题看起来与所有纬度/经度正则表达式问题类似,但我的问题对我无法找到的格式提出了不同的看法。我只想接受这样的格式:

LAT: XX-XX.XX N|S
LON: XXX-XX.XX E|W

这适用于 C# 窗口文本条目,其中纬度和经度在单独的文本框中输入。

我希望格式在这些位置仅接受 1 个破折号 (-) 和 1 个小数(即负值无效)并正确执行范围,以便需要输入所有位值,例如:

LAT 0-90 北或南

00-00.00 N     valid
5-00.00 N invalid
05-00.00 N valid
90-00.00 N valid
89-59.99 S valid
90-60.00 S invalid
91.00.00 N invalid

LON 0-180 东或西

0-0.0 E        invalid
15-00.00 E invalid
015.00.00 E valid
180-00.00 E valid
180-01.00 E invalid
179-59.99 W valid
179-60.00 W invalid
181-00.00 W invalid

我知道如何逐位完成,例如 Latitude:[0-9][0-9]-[0-5][0-9].[0-9][0-9] [N|S]

这就是我对 RegEx 创作的了解程度。

一如既往,我们将不胜感激。

最佳答案

我的建议是

String patternLatitude = @"^(90\-00\.00)|([0-8]\d\-[0-5]\d\.\d\d) (N|S)$";
String patternLongitude = @"^(180\-00\.00)|((1[0-7]\d)|(0\d\d)\-[0-5]\d\.\d\d) (W|E)$";

提供给定的例子

  015.00.00 E    valid 

实际上应该是无效的。更多测试示例(均无效)

 090-00.01 N
180-00.01 E
190-00.00 E
200-00.00 E

解释:

纬度: 90-00.00 是一个特例(90 度的唯一可能值),对于其他度数我们可以写下[0..8]\d;分钟是 [0..5]\d,小数点只有两位数:\d\d

经度:180-00.00 是一个特例(唯一可能有 180 度);第二种情况 1** 纬度:因为我们没有 180190 纬度,我们可以将它们作为 1[0-7]\d;最后,如果纬度以 0 开头,它可以有任意两位数:0\d\d。分钟及其小数点与纬度情况下的相同。

关于c# - N-S 和 E-W 格式的纬度/经度正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com