の部分文字列のList<string>
を持っているか、大きなメインストリングに含まれていない可能性があります。例:私は何をしたいか部分文字列のリストで部分文字列が最初に出現するのを見つける方法は?
List<string> subStringList = new List<string>(){" at ", " @ "," near "," by "," above "};
List<string> searchStringList = new List<string>{
"GULF ISLAND POND NEAR LEWISTON, ME",
"South Branch Raritan River near High Bridge NJ",
"Susquehanna R near Browns Island at Dalmatia, PA",
"PARKS CREEK AT LYLE FIELD RD NEAR JEFFERSON, GA",
"HOMOSASSA R AT HOMOSASSA FL",
"ST. CLAIR RIVER NEAR ROBERTS LANDING, MI"
};
は、与えられた検索文字列に最初を発生subStringList
の要素を検索し、そのポイントにsearchStringのを返すことです。例えば
:出力は次のようなものになるはずです
List<string> riverList = new List<string>();
foreach (var seachString in searchStringList)
{
string river = seachString.ToLower();
int minIndex = int.MaxValue;
foreach (var subString in subStringList.Select(r => r.ToLower()).AsEnumerable())
{
var index = river.IndexOf(subString);
if (index != null && index > -1 && index < minIndex)
minIndex = index;
}
riverList.Add(seachString.Substring(0,minIndex));
}
:
[0]: "GULF ISLAND POND"
[1]: "South Branch Raritan River"
[2]: "Susquehanna R"
[3]: "PARKS CREEK"
[4]: "HOMOSASSA R"
[5]: "ST. CLAIR RIVER"
を私が持っているコードが動作するようですが、このような何かを行うには、より効率的な方法があり、どのようにこのような何かをLinqで行うことができますか?ここで
私がしたいことは、指定された検索文字列の中で最初に出現した 'subStringList'の要素を見つけて、その点までsearchStringを返すことでしたか?" –
はい、これは問題のより良い説明です。 –
現在のコードでは、IndexOf(ss)がnullを返すことはないので、 'Index!= null'は不要です。また、検索している文字列に検索文字列がない場合は、現在のコードがクラッシュします。 – JohnG