0

我有一个充满非结构化数据的文本文件。

在该数据中,我有要提取并放入新文本文件的电话号码。

我只关心文件中的数字。

我想知道 C# 或 VB 中是否有方法可以做到这一点?

我知道 IBM 有一个名为 Omnifind 的软件包来进行数据分析,但我想编写一个只执行上述主题的应用程序。

PS数据的一个例子 -

John Smith London 123456 
Hayley Smith Manchester 234567 
Mike Smith Birmingham 345678

所以我想创建一个新文件——

123456 
234567 
345678
4

3 回答 3

3

没有运气 - 没有这样的方法。我会建议类似的东西 -

List<string> result = new List<string>();
      using(StreamReader content = File.OpenText("text"))
      {
        while(!content.EndOfStream)
        {
          string line = content.ReadLine();
          var substrings = line.Split(' ');
          result.Add(substrings[substrings.Length-1]);
        }
      }
于 2011-04-08T10:47:04.930 回答
1

好吧,您可以使用正则表达式之类的东西,或者在这种情况下,您可能只需要一些基本的字符串操作:

using (StreamReader reader = new StreamReader("infile.txt"))
{
    using (StreamWriter writer = new StreamWriter("outfile.txt"))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            int index = line.LastIndexOf(' ');
            if (index > 0 && index + 1 < line.Length)
            {
                writer.WriteLine(line.Substring(index + 1));
            }
        }
    }
}
于 2011-04-08T10:51:18.403 回答
1

试试这个

using System.IO;
using System.Text.RegularExpressions;
public List<string> NaiveExtractor(string path)
{
    return 
    File.ReadAllLines(path)
        .Select(l => Regex.Replace(l, @"[^\d]", ""))
        .Where(s => s.Length > 0)
        .ToList();
}

顾名思义,它很幼稚,并且还会在名称中提取数字,如果一条线路有两个电话号码,它们就会被拼凑在一起。

于 2011-04-08T10:54:55.153 回答