【发布时间】:2017-08-23 08:50:44
【问题描述】:
列表和字符串是:
string Text;
List<string> Names = new List<string>();
现在将数据从数据库加载到列表中:
string connectionString = "Data Source=SANGEEN-PC;Initial Catalog=IS_Project;Integrated Security=True;Connection Timeout=0";
using (SqlConnection cnn = new SqlConnection(connectionString))
{
try
{
SqlDataAdapter da = new SqlDataAdapter("select NamesValues from Names", cnn);
DataSet ds = new DataSet();
da.Fill(ds, "Names");
foreach (DataRow row in ds.Tables["Names"].Rows)
{
Names.Add(row["NamesValues"].ToString());
}
}
catch (Exception ex)
{
MessageBox.Show("Can not open connection ! ");
}
}
现在将数据加载到字符串:
Text = System.IO.File.ReadAllText(@"D:\Data-Sanitization-Project\Files\Test.txt");
现在我想比较名称和文本,这样:
- 查找同样在字符串(匹配的单词)中的所有列表项并将其存储在列表或数组中。
- 将所有找到的匹配词替换为“姓名”。
- 计算匹配的单词。
例子:
Names: Text:
Sangeen Khan I am Sangeen Khan and i am friend
Jhon Jhon. Jhon is friend of Wasim.
Wasim
Alexander
Afridi
所需操作:
Matched List/Array: Matches: Updated Text:
Sangeen Khan 4 I am "Name" and i am friend
Jhon "Name". "Name" is friend of "Names".
Wasim
针对以上三点,我写了如下代码,但是还是不行:
var TextRead = File.ReadAllLines(text);
HashSet<string> hashSet = new HashSet<string>(TextRead);
foreach (string i in Names)
{
if (hashSet.Contains(i))
{
MessageBox.Show("found");
}
}
我已尽力解释我的问题,但是,如果您了解我需要编辑,请随时编辑我的问题。先感谢您。
【问题讨论】:
-
为什么你之前有 List
时还使用 hashset?你试过 Names.Contains() 吗? -
@David Lindon 文本是字符串,我正试图在该字符串文本中查找单词。我不认为 .Contains() 可以与字符串一起使用
-
对于计数,您要计算所有子字符串还是只计算匹配的单词?你定义中的一个词是什么?是空格分隔还是标点符号分隔,哪个字符?
-
您注意到您的文本只包含一次
Jhon,因为另一个是Jhnon?