在Racket中列出字符串

use*_*359 1 lisp regex arrays string racket

我有一个像这样定义的列表:

(define testlist '((Dog <=> Cat)
                   (Anne <=> Dodd))
Run Code Online (Sandbox Code Playgroud)

有没有办法转:(car testlist)进入一个字符串所以我可以使用regexp来搜索"<=>"?

Joh*_*nts 5

让我从这个极为相关的 Jamie Zawinski报价开始:

有些人在遇到问题时会想:"我知道,我会使用正则表达式."现在他们有两个问题.

你真的不想在这里使用正则表达式.首先,当您<=>在其中间有标识符时,基于正则表达式的解决方案将会中断.

另一方面,在不使用正则表达式的情况下解决此问题非常容易.

这里有一大堆"正确的答案",具体取决于你究竟要做什么,但让我首先指出你可以使用"成员"函数来查看列表是否包含符号'<=>:

#lang racket

(define testlist '((Dog <=> Cat)
                   (Anne <=> Dodd)))

(cond [(member '<=> (car testlist)) "yep"]
      [else "nope"])
Run Code Online (Sandbox Code Playgroud)

我怀疑你是在尝试将这些解析为逻辑等价,在这种情况下你需要定义语句的可能结构,然后从那里开始,但是让我们从不使用常规表达式开始:).