Scheme 相当于Java';方案中的s IndexOf()?
我正在计划中开发一个小程序,但我被卡住了。我可以在Scheme中使用类似于Java的indexOf()的东西吗?可能有,但教授通常希望您自己编写 这里是C风格的psuedo代码,因为我不想记住语法Scheme 相当于Java';方案中的s IndexOf()?,scheme,Scheme,我正在计划中开发一个小程序,但我被卡住了。我可以在Scheme中使用类似于Java的indexOf()的东西吗?可能有,但教授通常希望您自己编写 这里是C风格的psuedo代码,因为我不想记住语法 int indexOf(element, list, i) { if car(list) == element then return i+1; else indexOf(element, cdr(list), i+1); } 请注意,调用它需要为i传
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。您的问题不清楚您使用的是什么方案实现 如果是PLT方案,您可能正在寻找类似“regexp匹配位置”的内容 (car(car(regexp匹配位置(regexp引用“zip”)“zapzipdingzip”)) =>
3假设您尝试在字符串中搜索(并且这不是一个旨在帮助您搜索递归的赋值),那么您可以尝试以下函数:
例如,在PLT方案中,方法是使用字符串->列表将字符串转换为列表,然后使用许多可用方法之一对列表进行操作。完成后将列表转换回字符串。搜索列表(非常安全):
为了让更多人关注你的问题,你应该将标题改为更具描述性的.List.indexOf或String.indexOf?你给我发的网站真的很有帮助。非常感谢。 (car (car (regexp-match-positions (regexp-quote "zip") "zapzipdingzip"))) 3
(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))])))