如何在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)
我想需要某种形式的正则表达式,但是我的正则表达式技能非常缺乏。提前感谢!
是的,在这种情况下正则表达式是你的朋友。我会专注于匹配距离并将其从输入文本中删除。剩下的是关键字……
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);
}