首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过csv文档解析地址查找

通过csv文档解析地址查找
EN

Stack Overflow用户
提问于 2014-08-10 18:45:34
回答 2查看 97关注 0票数 0

我一直在编写一个简单的C#应用程序,通过解析csv文件来执行地址搜索。用户只需输入地址的一部分,完整的地址就会在csv文件解析后返回。

到目前为止,这是GUI:

元素名称如下:

  • 组合框字段= AddressEntry
  • 搜索按钮= SearchButton
  • 清除按钮= ClearButton
  • 出口按钮= ExitButton

我解析的csv文件有不同列长的行,我的目标是遍历每一行/列,在用户单击搜索按钮后返回第一个最接近的匹配。这是CSV文件内容的示例:

代码语言:javascript
复制
MK1 1AS, Royal Mail, Bletchley Delivery Office, Dane Road, Bletchley, Milton Keynes
MK1 1AX, Webbs Tool Hire, Unit 1-3, Stadium Business Court, Denbigh West Industrial Estate, Denbigh Road, Bletchley, Milton Keynes
MK1 1AX, Crown Precision Engineering Ltd, Unit 4-5, Stadium Business Court, Denbigh West Industrial Estate, Denbigh Road, Bletchley, Milton Keynes
MK1 1AX, Unit 6, Stadium Business Court, Denbigh West Industrial Estate, Denbigh Road, Bletchley, Milton Keynes
MK4 4FL, 2, Levens Hall Drive, Westcroft, Milton Keynes
MK4 4FL, 28, Levens Hall Drive, Westcroft, Milton Keynes
MK46 5EF, 1, Mow Mead, Olney
MK46 5EF, 16, Mow Mead, Olney
MK2 2RD, 55, Westfield Road, Bletchley, Milton Keynes
MK2 2RD, 81, Westfield Road, Bletchley, Milton Keynes
MK12 5EG, 1, Woodland View, Wolverton, Milton Keynes
MK12 5EG, 20, Woodland View, Wolverton, Milton Keynes
MK13 7BX, 1, Harrowden, Bradville, Milton Keynes
MK16 8EU, 70, Queens Avenue, Newport Pagnell
MK7 7DT, 1, Spearmint Close, Walnut Tree, Milton Keynes
MK18 1JL, H S B C, Market Hill, Buckingham

我已经尝试过编写这个代码,但是现在每当我尝试搜索什么东西时,我都会得到一个空白的消息框。此外,目前看来,我只在一列中搜索,而不是所有列(第1栏),只返回该栏的结果。如何将搜索扩展到包括所有列?

代码语言:javascript
复制
    private void SearchButton_Click(object sender, EventArgs e)
    {
        String addressText = GetAddress(AddressEntry.Text);
        MessageBox.Show(addressText);
    }

    String GetAddress(String addressText)
    {
        var strLines = File.ReadLines("pca_mk_addresslist.csv");
        foreach (var line in strLines)
        {
            if (line.Split(',')[1].Equals(addressText))
                return line.Split(',')[1];
        }

        return "";
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-10 18:54:20

您的现有循环循环遍历所有输入行,在它的正文中,您将每一行分割成一个数组,但只访问数组的单个元素进行比较。

您需要将数组的每个元素与输入进行比较。

代码语言:javascript
复制
foreach (var line in File.ReadLines("pca_mk_addresslist.csv")
{
    var fields = line.Split(',');

    foreach(var field in fields)
    {
        if(field == addressText)
            return fields[1]
    }

    return String.Empty;
}
票数 1
EN

Stack Overflow用户

发布于 2014-08-10 18:49:12

代码语言:javascript
复制
foreach (var line in strLines)
{
   var result = line.Split(',').FirstOrDefault(x => x == addressText);

   if (result != null)
         return result;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25231863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档