在CVS文件中,我有一个地址为IP的列。 当我试图找到不在列表中的100.100.100.2时,它找到100.100.100.21等。我怎么才能只搜索这个唯一的字符串?
分隔符是“;”
我用:
TextFieldParser sprawdz = new TextFieldParser("C:\\wykaz_druk.csv");
string currentLine;
string searchcsv = textBox_SPR_SEARCH.Text;
sprawdz.TextFieldType = FieldType.Delimited;
sprawdz.Delimiters = new string[] { ";" };
sprawdz.TrimWhiteSpace = true;
do
{
currentLine = sprawdz.ReadLine();
if (currentLine != null && currentLine.Contains(searchcsv))
{
string file = currentLine;
string adresip = file.Split(';')[2].Trim();
textBox2.Text = adresip;
}
}
while (currentLine != null);
我也尝试过:
.ReadLines("C:\\wykaz_druk.csv")
.Where(line => line.Contains(NS)).FirstOfDefault();
if (foundRecord != null)
{
var cols = foundRecord.Split(';');
var status = cols[0];
...
答案 0 :(得分:2)
我怀疑你检查整行,因为你想避免产生很多子串。但是,Contains
将匹配包含该特定IP地址的任何行。
诀窍是强制Contains
搜索单个字段匹配。如果IP字段出现在行的中间,则可以将分隔符添加到每一行,例如:
var searchCSV= String.Format(";{0};",textBox_SPR_SEARCH.Text);
// or
// var searchCSV= $";{textBox_SPR_SEARCH.Text};";
if(currentLine?.Contains(searchcsv) == true)
{
string file = currentLine;
string adresip = file.Split(';')[2].Trim();
...
}
如果该字段出现在该行的开头,请仅使用结尾分隔符StartsWith
:
var searchCSV= $"{textBox_SPR_SEARCH.Text};";
if(currentLine?.StartsWith(searchcsv) == true)
...
如果它是最后一个字段,请使用EndsWith
仅包含起始分隔符
var searchCSV= $";{textBox_SPR_SEARCH.Text}";
if(currentLine?.EndsWith(searchcsv) == true)
答案 1 :(得分:1)
string.Contains
检查行是否包含指定的字符串。完全理解,"somestring".Contains("some")
是true
。如果是这种情况,您首先需要从csv获取IP,然后检查结果是否与您请求的IP匹配。
TextFieldParser sprawdz = new TextFieldParser("C:\\wykaz_druk.csv");
string currentLine;
string searchcsv = textBox_SPR_SEARCH.Text;
sprawdz.TextFieldType = FieldType.Delimited;
sprawdz.Delimiters = new string[] { ";" };
sprawdz.TrimWhiteSpace = true;
do
{
currentLine = sprawdz.ReadLine();
if (currentLine != null)
{
string file = currentLine;
string adresip = file.Split(';')[2].Trim();
if(adresip == searchcsv)
{
textBox2.Text = adresip;
}
}
}
while (currentLine != null);
答案 2 :(得分:1)
在内部检查中使用等于
if (currentLine != null && currentLine.Contains(searchcsv))
{
string file = currentLine;
string adresip = file.Split(';')[2].Trim();
if(adresip.Equals(searchcsv))
textBox2.Text = adresip;
}