搜索特定字符串的文件并检查后面是否有任何内容

时间:2013-08-09 19:57:28

标签: c# .net

我想查看特定字符串的文件内容,实际上我想检查文件包含' ANSWER'如果在该字符串后面有任何字符到文件末尾。

我怎样才能实现?

P.S。文件内容是动态内容,而且答案是“回答”。字符串不在文件内的固定位置。

由于

2 个答案:

答案 0 :(得分:6)

static bool containsTextAfter(string text, string find)
{
    // if you want to ignore the case, otherwise use Ordinal or CurrentCulture
    int index = text.IndexOf(find, StringComparison.OrdinalIgnoreCase); 
    if (index >= 0)
    {
        int startPosition = index + find.Length;
        if (text.Length > startPosition)
            return true;
    }
    return false;
}

以这种方式使用它:

bool containsTextAfterAnswer = containsTextAfter(File.ReadAllText("path"), "ANSWER");

答案 1 :(得分:2)

一种方法是将整个文件加载到内存中并进行搜索:

string s = File.ReadAllText(filename);
int pos = s.IndexOf("ANSWER");
if (pos >= 0)
{
    // we know that the text "ANSWER" is in the file.
    if (pos + "ANSWER".Length < s.Length)
    {
        // we know that there is text after "ANSWER"
    }
}
else
{
    // the text "ANSWER" doesn't exist in the file.
}

或者,您可以使用正则表达式:

Match m = Regex.Match(s, "ANSWER(.*)");
if (m.Success)
{
    // the text "ANSWER" exists in the file
    if (m.Groups.Count > 1 && !string.IsNullOrEmpty(m.Groups[1].Value))
    {
        // there is text after "ANSWER"
    }
}
else
{
    // the text "ANSWER" does not appear in the file
}

在正则表达式的情况下,“ANSWER”的位置将在m.Index,“ANSWER”之后的文本位置将在m.Groups[1].Index