价格表解析器

时间:2010-07-21 12:47:09

标签: c# data-mining

我必须创建Pricelist解析器,从excel或csv导入数据并将其放入数据库中。从源代码获取数据我没有问题。我需要自动找到包含价格,产品名称和描述的列。

您可以建议如何做到这一点,有共同的方法或库吗?

数据样本1:

Intel Core 2 Duo E6300 (2.80GHz, 1066MHz, 2MB, S775) tray  |    83
Intel Core 2 Duo E6500 (2.93GHz, 1066MHz, 2MB, S775) tray  |    86

数据样本2:

     Title                     Description                Guaranty     Price  
Intel Core 2 Duo E6300  |  2.80GHz, 1066MHz, 2MB, S775   |  12       |  83    
Intel Core 2 Duo E6500  |  2.93GHz, 1066MHz, 2MB, S775   |  6        |  86

数据样本3:

 UPC                Title                      Price
 456546545     |  Intel Core 2 Duo E6300    |  83 
 4654654654    |  Intel Core 2 Duo E6500    |  out of stock

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

如果你使用的是SQL Server,我建议你不要创建一个程序,而是使用SQL Server Integration Services,它内置了对CSV和Excel的支持。

答案 2 :(得分:0)

根据输入的质量(所有输入字符串的格式均等),您可以尝试以下操作:

string s = "Intel Core 2 Duo E6300 (2.80GHz, 1066MHz, 2MB, S775) tray  |    83";
string firstPart = s.Substring(0, s.IndexOf("(")).Trim(); //returns "Intel Core 2 Duo E6300"
string secondPart = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1).Trim(); //returns "2.80GHz, 1066MHz, 2MB, S775"
string thirdPart = s.Substring(s.IndexOf(")") + 1, s.IndexOf("|") - s.IndexOf(")") - 1).Trim(); //returns "tray"
string fourthPart = s.Substring(s.IndexOf("|") + 1, s.Length - s.IndexOf("|") - 1).Trim(); //returns "83"

但是当您的数据格式不统一时,您可能需要进行一些(或大量)检查才能使用上述功能。