在我的代码中,我试图检查一个字符串是否有一个特定的前缀, 这样做,我正在使用平等?和字符串引用函数。 但它似乎没有按预期工作
这里是我要说的部分:
(: plPrefixContained : String -> Boolean)
(define (plPrefixContained x )
(equal? (string-ref x 0) "p"))
(test (plPrefixContained "pcenuc") => true)
我正在检查这个特定的函数,它应该返回 true,但我在测试中总是返回 false。 我试图将 "p"更改为 #/p"并且我试图使用 string=? 和 eq? insted of equal? 但没有。
任何帮助将不胜感激
(测试(plPrefixContained "pcenuc")=> 真)
我正在使用 DRracket,语言是#lang pl
最佳答案
请记住,string-ref
返回一个字符,而不是一个字符串。为使比较成功,请使用 #\p
而不是 "p"
。
(define (plPrefixContained x )
(equal? (string-ref x 0) #\p))
以上将起作用。但为了更明确,您应该使用 char=?
而不是 equal?
,这样您就会记住比较是在字符之间进行的。
关于string-ref 函数不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55430396/