检查Scheme中的字符串包含情况

发布于 2024-08-11 07:40:11 字数 79 浏览 4 评论 0原文

如何在 DrScheme 中检查字符串是否包含给定字符/子字符串?如果在模块中定义了正确的模块,我如何包含它?

How do I check, in DrScheme, whether a string contains a given character / substring? How do I include the proper module if it is defined in a module?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

维持三分热 2024-08-18 07:40:11

在 DrScheme 中,假设语言设置为“Module”,则以下内容将起作用

#lang scheme
(require (lib "13.ss" "srfi"))

(string-contains "1234abc"  "abc")

In DrScheme, assuming the language is set to "Module", the following will work

#lang scheme
(require (lib "13.ss" "srfi"))

(string-contains "1234abc"  "abc")
季末如歌 2024-08-18 07:40:11

没有标准程序可以做到这一点。 SRFI 13 包含您需要的过程(字符串索引)。请检查您的方案是否实施此 SRFI。

There is no standard procedure to do this. SRFI 13 contain the procedure you need (string-index). Please check if your Scheme implements this SRFI.

眼眸 2024-08-18 07:40:11

这是一个快速技巧。它返回字符串 s 在字符串 t 中的索引(从 0 开始)。如果没有找到则#f。如果您的方案具有 SRFI-13 支持或其他内置支持,则可能不是最好的方法。

代码已编辑。感谢伊莱的建议。

(define (string-index s t)
  (let* ((len (string-length s))
        (max (- (string-length t) len)))        
    (let loop ((i 0))
      (cond ((> i max) 
             #f)
            ((string=? s
                       (substring t i (+ i len)))
             i)
            (else (loop (+ i 1)))))))

Here is a quick hack. It returns the index (0 based) of string s in string t. Or #f if not found. Probably not the best way to do it if your Scheme has SRFI-13 support, or other built-in support.

Code edited. Thanks to Eli for suggestions.

(define (string-index s t)
  (let* ((len (string-length s))
        (max (- (string-length t) len)))        
    (let loop ((i 0))
      (cond ((> i max) 
             #f)
            ((string=? s
                       (substring t i (+ i len)))
             i)
            (else (loop (+ i 1)))))))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文