ott*_*uit 6 delphi compare tstringlist find
Delphi 2007中是否有任何集成解决方案来检查TStringList是否包含某个值的一部分?
例如:
List.AddObject('This is a string', customStringObject1);
List.AddObject('This is a mushroom', customStringObject2);
List.AddObject('Random stuff', customStringObject3);
Run Code Online (Sandbox Code Playgroud)
搜索"这是一个"应该给我"真实",因为前两个元素包含这个部分.
到目前为止我唯一知道的方法是TStringList.find(string,integer)
,但这会执行完整的字符串比较,即只搜索这是一个字符串将返回true.
有什么建议?
Too*_*the 10
未集成,但您可以在Text属性上使用Pos函数:
Pos('This is a', List.Text)
Run Code Online (Sandbox Code Playgroud)
如果你想要它被集成,你可以为TStrings创建一个类助手.
不直接,没有.你必须要么:
1)调用Pos()
的Text
属性,如果你有很多字符串的效率不高.
2)手动循环遍历列表,调用Pos()
每个String
.更高效,但也更多编码.
3)从中派生一个新类TStringList
并覆盖其虚拟CompareStrings()
方法,以便根据需要比较字符串(默认实现简单调用,AnsiCompareStr()
或者AnsiCompareText()
,取决于CaseSensitive
属性).如果找到匹配则返回0.然后TStringList.Find()
,您可以使用CompareStrings()
内部调用的方法(请注意TStringList.Sort()
,但是如果您调用则可以避免这种情况TStringList.CustomSort()
).