我正在开发Scheme中的一个小程序,但我遇到了困难。有没有类似于我可以在Scheme中使用的Java的indexOf()?
答案 0 :(得分:1)
可能有,但通常教授要你自己写。
这是C风格的伪代码,因为我不想记住语法。
int indexOf(element, list, i)
{
if car(list) == element then
return i+1;
else
indexOf(element, cdr(list), i+1);
}
请注意,调用它需要为i传递0(如果您愿意,可以编写包装器),并且这是基于1的索引,如果您想要基于0的索引,则将返回更改为i
答案 1 :(得分:1)
假设您正在尝试搜索字符串(并且它不是用于帮助您进行递归的分配),那么您可以尝试这里的函数:
答案 2 :(得分:0)
从您的问题中不清楚您正在使用哪种Scheme实现。
如果是PLT Scheme,你可能正在寻找类似“regexp-match-positions”的东西。
(car (car (regexp-match-positions (regexp-quote "zip") "zapzipdingzip")))
=>
3
答案 3 :(得分:0)
例如在PLT-Scheme中,要采用的方法是使用string-> list将字符串转换为列表,然后使用众多可用方法之一在列表上进行操作。完成后将列表转换回字符串。
答案 4 :(得分:0)
搜索列表(非常安全):
(define indexOf
(lambda (element lst)
(indexOfHelper element lst 0)))
(define indexOfHelper
(lambda (e l i)
(cond
[(null? l) -1]
[(equal? e (car l)) i]
[else (indexOfHelper e (cdr l) (+ i 1))])))