Scheme 相当于Java';方案中的s IndexOf()?

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传

我正在计划中开发一个小程序,但我被卡住了。我可以在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传递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))])))