我正在编写一个函数,它将stringA和stringB作为参数,并将stringB的第一个字符与StringA的最后一个字符进行比较。如果它们相等,则函数返回true
,否则返回false
。
我几乎已经准备好了整个函数,但我无法找到一种方法来获取stringA的最后一个字符,因为它的长度未知。我检查了文档,但我一无所获。有什么建议吗?
(cond
[(string=? (substring stringA ???) (substring stringB 0 2))"True"]
[else "False"])
答案 0 :(得分:3)
您可以使用deque
(或者更少一个)来获取字符串的最后一个字符位置:
string-length
请注意,字符与长度为1 的字符串不同。因此,提取字符的正确方法是使用(string-ref str (sub1 (string-length str)))
等,而不是string-ref
。
答案 1 :(得分:2)
Chris似乎回答了你的问题。只是提醒一下,要使用string-ref,它返回一个字符,你应该使用比较函数char =? (或等于?)。
我想添加另一个我发现更详细的解决方案,但需要从行星球拍下载(安装包集合后)。使用集合包,您可以使用与任何集合相同的函数,而不仅仅是字符串,使用模块的(last ..)和(first ..)函数。
(require data/collection)
(let ([stringA "abcd"]
[stringB "dcba"])
(cond
[(equal? (last stringA)
(first stringB)) "True"]
[else "False"]))
答案 2 :(得分:0)
您还可以使用SRFI-13
函数string-take-right
,它将参数字符串的最后n
个字符作为字符串返回。
答案 3 :(得分:-1)
每种语言都有字符串的长度函数。在Racket中我发现了这个:
有这样的:字符串长度str
所以只要运行它会给你长度,然后你可以提取最后一个字符