我通读了Racket's string library但找不到与 Java/JavaScript 的 indexOf
等效的函数方法。也就是说,是否有一个函数可以返回较大字符串中子字符串的第一个字符的索引;最好是带有可选启动参数的。像这样的东西:
(string-index "foobar" "bar")
;;; returns 3
我会对像列表' member
这样的东西感到满意功能。
最佳答案
SRFI 13 中有很多可用的字符串操作。其中有 string-contains
,它完全可以满足您的需求。
#lang racket
(require srfi/13) ; the string SRFI
(string-contains "foobar" "bar") ; evaluates to 3
在此处查看更多信息:SRFI 13
FWIW 这里是 string-index
的简单实现
(define (string-index hay needle)
(define n (string-length needle))
(define h (string-length hay))
(and (<= n h) ; if the needle is longer than hay, then the needle can not be found
(for/or ([i (- h n -1)]
#:when (string=? (substring hay i (+ i n)) needle))
i)))
(string-index "foobar" "bar")
关于string - 在 Racket 中查找子字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566305/