我正在尝试查看字符串数组中是否存在确切的子字符串。如果子字符串存在于字符串中,它将返回true,但它将包含拼写错误。
编辑:
例如,如果我正在检查字符串数组中是否存在“Connecticut
”,但拼写为“Connecticute
”,它仍会返回true,但我不想这样做。我希望它为'Connecticute'返回false并返回true
'康涅狄格'只有
有没有办法用LINQ做到这一点?
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[] sample = File.ReadAllLines(@"C:\samplefile.txt");
/* Sample file containing data organised like
Niall Gleeson 123 Fake Street UNIT 63 Connecticute 00703 USA
*/
string[] states = File.ReadAllLines(@"C:\states.txt"); //Text file containing list of all US states
foreach (string s in sample)
{
if (states.Any(s.Contains))
{
Console.WriteLine("Found State");
Console.WriteLine(s);
Console.ReadLine();
}
else
{
Console.WriteLine("Could not find State");
Console.WriteLine(s);
Console.ReadLine();
}
}
}
}
}
答案 0 :(得分:6)
String.Contains
返回true。
因此"Conneticute".Contains("Conneticut")
将成立。
如果您想要完全匹配,那么您正在寻找的是String.Equals
...
if (states.Any(s.Equals))
...
答案 1 :(得分:4)
您可以使用\b
来匹配word breaking个字符(即。空格,句点,字符串的开头或结尾等):
var r = new Regex("\bConneticut\b", RegexOptions.IgnoreCase);
var m = r.Match("Conneticute");
Console.WriteLine(m.Success); // false