我对序言非常陌生,所以假设我对术语知之甚少。 我在 SWI-prolog 中使用 swipl。
我想检查一个字符串是否以左花括号('{')开头并以右花括号('}'}结尾
一些answers我在网上读到的内容让我将以下内容编程到我的知识库中,以检查字符串是否以左花括号开头。
start_left_squiggle([Letter|_]):-
Letter = '{'.
但是当我运行这个函数时,当我期望它返回 true 时,我得到了 false。
?- start_left_squiggle('{hello').
false.
此外,answers检查最后一个字符是否是波浪括号似乎是正确的,这导致我编写了以下代码。
last_char(str, X):-
name(S, N),
reverse(N, [F|_]),
name(X, [F]).
end_right_squiggle(Werd):-
last_char(Werd, Last),
Last = '}'.
当我期望它返回 true 时,运行该函数时我再次得到 false。
?- end_right_squiggle('hello}').
false.
最佳答案
使用 sub_atom(Atom, Before, Length, After, Subatom)
像这样:
?- sub_atom('{abc}',0,1,_,C).
C = '{'.
?- sub_atom('{abc}',_,1,0,C).
C = '}'.
或者只是测试:
?- sub_atom('{abc}',0,1,_,'{').
true.
?- sub_atom('{abc}',_,1,0,'}').
true.
关于string - Prolog:检查字符串的第一个和最后一个字符是否是左右花括号 ('{' & '}' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621388/