//不考虑:条件中字符串会出现“ or and ”、“ and or ”、“ and and ”、“ or or ”
//不考虑:“ or and ”大小写
//不考虑:多余的空格
//注意:必要空格“ or and ”//“ or ” + “ and ”procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
S := Edit1.Text; //'条件1 or 条件2 or';//Edit1 or and or S := #11 + S + #11;
while
(Pos(' or and ', S) > 0) or
(Pos(' and and ', S) > 0) or
(Pos(' or or ', S) > 0) or
(Pos(' and or ', S) > 0) or
(Pos(#11' and ', S) > 0) or
(Pos(#11' or ', S) > 0) or
(Pos(' and '#11, S) > 0) or
(Pos(' or '#11, S) > 0) do begin
S := StringReplace(S, ' or and ', ' and ', [rfReplaceAll]);
S := StringReplace(S, ' and and ', ' and ', [rfReplaceAll]);
S := StringReplace(S, ' or or ', ' or ', [rfReplaceAll]);
S := StringReplace(S, ' and or ', ' and ', [rfReplaceAll]);
S := StringReplace(S, #11' and ', #11, [rfReplaceAll]);
S := StringReplace(S, #11' or ', #11, [rfReplaceAll]);
S := StringReplace(S, ' and '#11, #11, [rfReplaceAll]);
S := StringReplace(S, ' or '#11, #11, [rfReplaceAll]);
end;
S := Trim(S); Edit2.Text := S;
end;
//不考虑:“ or and ”大小写
//不考虑:多余的空格
//注意:必要空格“ or and ”//“ or ” + “ and ”procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
S := Edit1.Text; //'条件1 or 条件2 or';//Edit1 or and or S := #11 + S + #11;
while
(Pos(' or and ', S) > 0) or
(Pos(' and and ', S) > 0) or
(Pos(' or or ', S) > 0) or
(Pos(' and or ', S) > 0) or
(Pos(#11' and ', S) > 0) or
(Pos(#11' or ', S) > 0) or
(Pos(' and '#11, S) > 0) or
(Pos(' or '#11, S) > 0) do begin
S := StringReplace(S, ' or and ', ' and ', [rfReplaceAll]);
S := StringReplace(S, ' and and ', ' and ', [rfReplaceAll]);
S := StringReplace(S, ' or or ', ' or ', [rfReplaceAll]);
S := StringReplace(S, ' and or ', ' and ', [rfReplaceAll]);
S := StringReplace(S, #11' and ', #11, [rfReplaceAll]);
S := StringReplace(S, #11' or ', #11, [rfReplaceAll]);
S := StringReplace(S, ' and '#11, #11, [rfReplaceAll]);
S := StringReplace(S, ' or '#11, #11, [rfReplaceAll]);
end;
S := Trim(S); Edit2.Text := S;
end;
怕使用者选多了条件或者选多了"or" "and"...程序会出错,你想把多余的删去.
用户在两个条件之间不是输入 关联条件,而是提供一个combobox供用户选择关联条件.这样的话就很容易搞定了