【发布时间】:2017-10-07 21:44:49
【问题描述】:
我正在尝试在文件中查找状态子字符串。我打开文件并一次加载每行一个字符串。然后我想检查每个字符串是否包含我的子字符串中的一种状态。它没有按预期工作,因为它一直返回“找不到子字符串”,即使我知道状态在字符串中。我做错了什么?
编辑:我现在意识到错误是什么,这一行完全错误:
if (lines.Any(stringToCheck.Contains))
应该是这样的:
if (stringToCheck.Any(s.Contains))
感谢大家的帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
static void Main (string[] args)
{
string[] stringToCheck = {"Alabama","Alaska","Arizona","Arkansas","California","Colorado"};
string[] lines = File.ReadAllLines(@"C:\C# Project\sampledata.dat");
foreach (string s in lines)
{
if (lines.Any(stringToCheck.Contains))
{
Console.WriteLine("Found substring");
Console.WriteLine(s);
Console.ReadLine();
}
else
Console.WriteLine("Could not find substring");
Console.WriteLine(s);
Console.ReadLine() ;
}
}
}
}
【问题讨论】:
-
这一行本身是错误的。 lines.Any(stringToCheck.Contains) 尽管您处于循环中,但您正在遍历所有行,stringToCheck 也不止一个值 - Contains 在这里也可能失败
-
先看方法
stringA.Contains(stringB)。它有什么作用?然后——让我们暂时忘记 string.Contains——Linq 的list.Any(someCriteria)是做什么的? -
@Gururaj 您应该将其发布为答案而不是评论。
-
@ScottChamberlain - 我不想开始编写代码,除非他们自己尝试并失败
标签: c# linq substring contains