リストや文字列は、次のとおりです。リストと文字列を比較し、C#を使用して文字列内の一致する単語を見つける方法は?
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
所望の動作:上記の3つの点については
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");
}
}
私は自分の問題を説明するために最善を尽くしているが、編集する必要があることを理解している場合は、私の質問を編集してください。前もって感謝します。
以前にリストを持っていたときに、なぜハッシュセットを使用していますか? Names.Contains()を試しましたか? –
@David Lindon The Textは文字列で、その文字列Textで単語を見つけようとしています。私は思っていません.Contains()は文字列で使用することができます –
カウントのために、すべての部分文字列または一致する単語だけを数えたいですか?あなたの定義にある言葉は何ですか?それはスペースで区切られていますか、または区切り文字で区切られていますか? –