【发布时间】:2018-03-16 15:47:11
【问题描述】:
我有一个包含地址的文件,我想检查地址是否正确。我正在将地址与已获批准的澳大利亚州列表进行比较。
我的地址文件如下所示:
NEW SOUTH WALE
N S W 2232
SOUTH AUSTRALI
Victoria
SA 5158
Victoria 3136
Victoria 3029
N.S.W. 2428
我在获得批准的澳大利亚各州的档案是:
NEW SOUTH WALES
QUEENSLAND
SOUTH AUSTRALIA
TASMANIA
VICTORIA
WESTERN AUSTRALIA
当我运行代码时,它会为“NEW SOUTH WALE”返回 true,但它会为“SOUTH AUSTRALI”返回 false
为什么它不为 'SOUTH AUSTRALI' 返回 true,因为它包含在 'SOUTH AUSTRALIA' 中?
下面是代码供参考:
static void Main(string[] args)
{
string[] lines = File.ReadAllLines(@"C:\C# Project\sampledata.dat");
var states = File.ReadAllLines(@"C:\C# Project\States.txt"); //Reads in states
int i = 1;
foreach (string line in lines) //Loops through data
{
if (states.Any(line.Contains))
{
File.AppendAllText(@"C:\C# Project\CorrectAddress.dat",
line + Environment.NewLine);
i++;
}
else
{
File.AppendAllText(@"C:\C# Project\IncorrectAddress.dat",
line + Environment.NewLine);
i++;
}
}
}
【问题讨论】:
-
如果您替换实际值,您会发现这正是它应该做的:
"SOUTH AUSTRALI".Contains("SOUTH AUSTRALIA")这显然是错误的 -
由于 Liam 更正之前的原始代码显然无法编译,因此它显然不是实际代码,也不是为演示而创建的minimal reproducible example问题。谁知道这段代码是否会出现同样的问题?
-
代码能编译吗?
-
@Liam - 未终止的字符串常量不
-
@user3394486 Damien 的意思是您最初发布的代码(后来被其他人修复)无效,确实如此;但是既然它现在已经修复了,最好我们都继续前进......