1

我正在尝试创建一个程序来读取这个带有域列表的文本文件,但它还有很多其他不必要的东西,比如标题、每个域的标题等。我想要的只是域。

现在,一个共同点是所有域都有一个“。”。某处甚至两个。有没有办法检查该 .txt 文件中的单词是否有“。”,然后将其添加到另一个字符串?

我环顾四周,但我只发现字符串包含,而不是单词包含。

现在如果不存在,有没有办法将每个单词分成一个字符串数组,然后用 for 循环单独测试每个单词?

这是一个例子:

Domain list name the first domain ip magicdomain.com name the second domain ip magicdomain2.com
etc.
4

5 回答 5

1

考虑这段代码:

        var words = text.Split(" ");

        foreach (var word in words)
            if (word.Contains("lookup"))
                Console.WriteLine("found it");
于 2012-05-11T12:21:27.343 回答
1

或者您可以为此使用正则表达式。谷歌“域名的正则表达式”,我发现这个库很有用

相关 SO:使用 C# 正则表达式解析域名?

于 2012-05-11T12:22:10.103 回答
0

string.IndexOf-1如果存在或不存在,将返回传入的字符或字符串的索引。

if(word.IndexOf('.') > -1)
{
  // got a `.` do something with word
}
于 2012-05-11T12:20:15.843 回答
0

获取字符串中的单词比检查每个单词的所需字符

从字符串中获取单词

检查“正则表达式:如何从字符串中获取单词(C#)”链接

于 2012-05-11T12:22:01.137 回答
0

您确定只有域部分将包含.

是否有任何分隔符用于分隔同一行上的其他信息。

如果没有看到您的一些示例数据,很难提出建议,但是如果您是域,则始终是一行的第一件事,然后是一个空格。您可以使用 Substring 和 IndexOf 的组合来获取第一个标记词。

line.Substring(0, line.IndexOf(' ')) 

或者,您可以使用该string.Split()方法根据某些分隔符对行进行标记。

您可以发布一些示例数据吗?

于 2012-05-11T12:23:03.890 回答