在Delphi 10 /西雅图,我尝试做一个嵌套的字符串测试.我有一个字符串,它是一个产品名。我需要根据产品名称找到产品类别。这将是不区分大小写,每个产品将只在一个类别。一旦我找到了一个类别,我就可以停止checking...My,最初的方法是通过一个CASE语句中的AnsiContainsText来完成这个任务,但是这是不允许的,因为CASE语句没有公共函数.
我有一种应该有效的方法,但是还有什么更优雅的吗?我将有大约40个不同的测试类别,并将运行(循环)这个测试大约6000种产品,所以我想要一些尽可能的表现。
// Determine new value...
Category := '';
if ((Category = '') and (AnsiContainsText(ProductText, 'PaaS')) then Category := 'PaaS';
if ((Category = '') and (AnsiContainsText(ProductText, 'IaaS')) then Category := 'IaaS';
if ((Category = '') and (AnsiContainsText(ProductText, 'SaaS')) then Category := 'SaaS';
...发布于 2016-11-10 13:15:35
外包出去!
function FindCategory(const ProductName: string): string;
const
categories: TArray<string> = ['PaaS', 'IaaS', 'SaaS']; // can easily be extended
var
S: string;
begin
for S in categories do begin
if ContainsText(ProductName, S) then Exit(S)
end;
result := '';
end;发布于 2016-11-11 15:46:43
可以使用pos()函数:
function FindCategory(const ProductName: string): string;
const
categories: string = 'PaaS,IaaS,SaaS,';
begin
if Pos(ProductName+ ',', categories)>0 then Exit(ProductName);
result := '';
end;https://stackoverflow.com/questions/40528427
复制相似问题