有没有办法检查一个字符串是否是 Prolog 中另一个字符串的子字符串?我尝试将字符串转换为字符列表,然后检查第一组是否是第二组的子集,这似乎不够严格。这是我当前的代码:
isSubstring(X,Y):-
stringToLower(X,XLower),
stringToLower(Y,YLower),
isSubset(XLower,YLower).
isSubset([],_).
isSubset([H|T],Y):-
member(H,Y),
select(H,Y,Z),
isSubset(T,Z).
stringToLower([],[]).
stringToLower([Char1|Rest1],[Char2|Rest2]):-
char_type(Char2,to_lower(Char1)),
stringToLower(Rest1,Rest2).
如果我用
isSubstring("test","tesZting")。
它返回是,但应该返回否。