乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 12|回复: 12

[编程交流] 在变量B中搜索字符串

[复制链接]

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 09:19:39 | 显示全部楼层 |阅读模式
伙计们,再次需要你们的帮助。我需要在一个变量上搜索2个字符串。如果找到这两个字符串,程序将返回True。
 
代码如下:
 
如果未找到“jose”,则返回false,不需要查找第二个字符串
 
如果找到“jose”,则搜索下一个字符串
第二个字符串可以是列表中的任意一个(“Michael”“Domino”“Carlos”“Smith”等)
如果不在列表中,则返回false。
 
我通过使用(2)if(vl string search)函数来实现我的目标,然后复制代码并粘贴4次,然后通过更改需要搜索的第二个字符串来搜索第二个字符串。很有趣,很长的例行程序,但它的工作。现在,我需要借用你的心思,思考如何使用列表来实现这一点。谢谢
 
  1. (defun c:test ()
  2. (vl-load-com)
  3. (setq myname "Jose Chan Smith")
  4. (setq mylist ("Michael" "Domino" "Carlos" "Smith"))
  5. (if (vl-string-search "JOSE" (strcase myname))
  6.       ;;;<-- need your help here
  7.    ;;;<-- I'm stuck
  8.    
  9. (princ "Strings found")
  10. (princ "Strings not found")
  11. )
  12. (PRINC)
  13. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:28:25 | 显示全部楼层
您可以使用member函数检查名称是否在列表中(或使用vl位置获取其索引),但请记住,搜索区分大小写,因此“MICHEAL”将不匹配(“MICHEAL”…)。
 
至于vl字符串搜索,您已经完成了这部分工作。现在,为了允许不区分大小写,您需要将列表设置为大写/小写。以下是更改此列表的“快速”方法:
然后使用构件或vl位置:
顺便说一句,成员返回一个从找到的项开始的列表-因此在上面它实际上会返回(“DOMINO”“CARLOS”SMITH”)。因此,一般来说,它的效率低于vl位置(它只返回找到的位置的整数-在上面它会返回1)。如果没有找到,两者都返回零。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:30:13 | 显示全部楼层
谢谢大家。我就快到了。对不起,我的英语和解释很差。既然我在做一个列表,我不妨把何塞添加到列表中。我的朋友以前没有想过。事情是这样的。。我需要这两个字符串在列表中。
 
第一个要找到的字符串是Jose。如果Jose不在名单上,请干净利落地退出。无需搜索第二个字符串
 
如果找到Jose,请查找列表中的第二个字符串。
如果还找到第二个字符串。找到两个字符串,因此“运行我的代码”
 
让我烦恼的是何塞总是被给予,而第二根弦却没有。所以我必须猜测列表中的另一个字符串是基于什么的。
很抱歉,这只是我在阅读“IF,AND,OR,COND”函数时遇到的一个问题/解决方案。
 
Lee和irneb帮助我解决了第二个字符串搜索,使其变得简单。这样就可以了,所以我不必粘贴我的cose 4次,但我需要一个更好的解决方案。
 
也许更好的解释是我的长代码
 
  1. 3
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:36:33 | 显示全部楼层
不能直接在myList变量上使用vl字符串搜索。原因是它包含一个列表而不是一个字符串。所以你需要做一些类似李或我的代码。无论如何,这是我的:
编辑:只是对李的一个查询。为什么使用vl-some,然后使用vl-string搜索?你可以用一个简单的eq来做vl,或者我认为vl位置(正如我得到的)在这种情况下会更有效。但不确定。
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 09:41:30 | 显示全部楼层
如果你不想让它在第一个名字找不到的情况下问第二个名字:
注意,我已经将if条件分解为每个可能的场景。您可能不需要这样做,因为您可以使用和轻松地将它们结合起来。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:45:41 | 显示全部楼层
我的坏李的代码工作得很好。我不知道我第一次尝试时做了什么。再次感谢各位,我再次了解了你们。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:50:26 | 显示全部楼层
 
如果我理解正确,OP不是在寻找字符串相等,而是检查“Jose”是否存在于给定字符串中,以及给定列表中的任何一个名称是否也存在于给定字符串中。这是我从OP在第一篇文章中发布的代码中的示例字符串中了解到的,我认为它比描述稍微清晰。
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 09:58:06 | 显示全部楼层
是的,李,你中了头奖。对不起,我的英语很差,lisp编程也很差。我只是好奇你们会怎么做,以一种简单的方式,这样我可以从中学习。大家都知道,对于我们这些新手来说,简单的方式是很长的路要走。我们必须写5行代码,你可以用一到两行来完成。
 
我将使用的不是常规方法,而是如何编写有效的lisp例程的方法。谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:03:10 | 显示全部楼层
非常欢迎LISP2LEARN,很高兴为您介绍一些信息
回复

使用道具 举报

23

主题

89

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2022-7-6 10:06:34 | 显示全部楼层
对不起,李,我觉得我们误会了。我的观点是,在myList变量中,名称是单独的文本片段——那么,当普通eq会做完全相同的事情时,为什么要对它们使用vl字符串搜索呢?因此,以下各项是等效的:
编辑:抓取。。。我才意识到你在说什么!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 03:08 , Processed in 0.333519 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表