Клипы Есть ли функция, аналогичная содержит в C #? - PullRequest
0 голосов
/ 05 апреля 2019

Привет, я пишу программу, которая будет имитировать пропозициональные законы.Я хотел бы убедиться, что определенные символы не содержатся в моих переменных.Есть ли простая функция, чтобы сделать это.

В настоящее время у меня это работает, если моя переменная только один символ, но хотел бы, чтобы она работала с переменной с несколькими слотами.

(deftemplate sentence (multislot sent))

(defrule read-from-user
 =>
(bind ?response "")
(printout t "Please enter a sentence: Use ~ for not and => for implies, or(v) and and(^) please. For predicates use { and } Example exists{richard}" crlf)
(bind ?response (explode$ (readline)))
 (bind ?response (replace-member$ ?response "(" (sym-cat "(")))
(bind ?response (replace-member$ ?response ")" (sym-cat ")")))
(bind ?response (replace-member$ ?response "~" (sym-cat "~")))
(bind ?response (replace-member$ ?response "v" (sym-cat "v")))
(bind ?response (replace-member$ ?response "=>" (sym-cat "=>")))
(bind ?response (replace-member$ ?response "^" (sym-cat "^")))
(bind ?response (replace-member$ ?response "[" (sym-cat "[")))
(bind ?response (replace-member$ ?response "]" (sym-cat "]")))
(bind ?response (replace-member$ ?response "{" (sym-cat "{")))
(bind ?response (replace-member$ ?response "}" (sym-cat "}")))

(assert (sentence (sent ?response))))


(defrule negative
(sentence (sent $?before "~" "(" "~" ?symbol ")" $?after))
(test (neq ?symbol "~" "(" ")" "=" "^" "v"))
=>
(assert (sentence (sent $?before $?symbol $?after))))

Этот фрагмент кода работает для одиночных символов, но я знаю, как превратить символ «Символ в $», и все же проверяю, что ни один из символов (,), ~, = и т. Д. Не находится в? $условное обозначение.

Так что, если в C # есть какая-то похожая функция, которую я могу использовать?спасибо ребята

1 Ответ

0 голосов
/ 05 апреля 2019

Используйте функцию str-index, чтобы определить, содержится ли последовательность символов в строке:

         CLIPS (6.31 4/4/19)
CLIPS> (str-index "^" "abc")
FALSE
CLIPS> (str-index "^" "ab^c")
3
CLIPS>
...