Delphi-Quellcode:
Function IsContainedOrEmpty(Const pattern, text : String) : Boolean;
Begin
if pattern='' then
result := True
else
result := Pos(pattern,text)<>0;
End;
Function AtLeastOnePatternIsNotEmpty (Const a,b,c,d : String) : Boolean;
Begin
result := (a+b+c+d<>'')
End;
Function TextContainsAtLeastOneOfThePatterns(Const text, a,b,c,d : String) : Boolean;
Begin
Result :=
AtLeastOnePatternIsNotEmpty(a,b,c,d)
and (
IsContainedOrEmpty(a,text)
or IsContainedOrEmpty(b,text)
or IsContainedOrEmpty(c,text)
or IsContainedOrEmpty(d,text)
);
End;
Das finde ich am lesbarsten, denn es entspricht 1:1 deiner Vorgabe. Kein Zählen, keine Zwischenvariablen, keine Tricks.
Hinweis:Man könnte die Funktion 'AtLeastOnePatternIsNotEmpty' performancetechnisch optimieren.