如何在c#中拉出用户文本输入的距离

本文关键字:文本 用户 输入 距离 | 更新日期: 2023-09-27 18:04:01

我有一个访问者用来搜索附近地方的搜索栏。它由两个输入框组成:keywords和distance。

我想把它简化成一个盒子,但允许游客进入一个距离。他们可以输入诸如"Costco within 5km""Denny's 2mi"之类的词。

在服务器端,我想从输入中拉出距离。我意识到犯错的空间很大。访问者可以在数字(4公里)后面加上空格,也可以使用全文(4公里),或者可能是任何其他需要担心的问题。

如果我想为访问者提供输入(n)km或(n)mi的能力,将数据解析为单独变量的好方法是什么?

假设一个访客输入"中国印度韩国餐馆5mi"。我想把它分成:

string keywords = "Chinese Indian Korean restaurants";
string distance = 5; //(notice no mi, or km)

我想需要某种形式的正则表达式,但是我的正则表达式技能非常缺乏。提前感谢!

如何在c#中拉出用户文本输入的距离

是的,在这种情况下正则表达式是你的朋友。我会专注于匹配距离并将其从输入文本中删除。剩下的是关键字……

Regex distRex = new Regex("(?<dist>''d+)''s*(?<unit>mi|km|ft)", RegexOptions.IgnoreCase);

那么你可以这样做:

Match m = distRex.Match(testInput);
if(m.Success)
{
    string keywords = distRex.Replace(testInput, string.Empty);
    // you may want to further sanitize the keywords by replacing occurances of common wors
    //   like "and", "at", "within", "in", "is" etc.
    string distanceUnits = m.Groups["unit"].Value;
    int distance = Int32.Parse(m.Groups["dist"].Value);    
}