我有一个充满非结构化数据的文本文件。
在该数据中,我有我想要提取的电话号码并将其放入新的文本文件中。
文件中的数字都是我关心的。
我想知道C#或VB中是否有方法可以做到这一点?
我知道IBM有一个名为Omnifind的软件包来进行数据分析,但是想要编写一个只执行上述主题的应用程序。
P.S。数据的一个例子 -
John Smith London 123456
Hayley Smith Manchester 234567
Mike Smith Birmingham 345678
所以我想创建一个只有 -
的新文件123456
234567
345678
答案 0 :(得分: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]);
}
}
答案 1 :(得分:1)
好吧,你可以使用像regular expressions这样的东西,或者在这种情况下你可能只是做一些基本的字符串操作:
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));
}
}
}
}
答案 2 :(得分: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();
}
顾名思义,这很天真,也会在名字中删除数字,如果一行有两个电话号码,他们就会聚在一起。