如果 nick 在文本文件第 x 行
Posted
技术标签:
【中文标题】如果 nick 在文本文件第 x 行【英文标题】:If nick isin text file line x 【发布时间】:2016-08-16 19:48:35 【问题描述】:我当前的代码有问题。
on *:TEXT:*text*:#:
if ($nick isin $read(test.txt, 1))
msg $chan working.
我遇到的问题是如果昵称“User1”在 test.txt 中,并且“User12”键入文本,它将检测到 User1 在 test.txt 中!如果“User1”在第 1 行,我怎样才能使“User12”不会说工作。
【问题讨论】:
会用 iswm 代替 isin 来解决这个问题吗? test.txt 的第一行是什么?只有一个缺口还是很多东西? nick 可以在 test.txt 的其他行中吗?顺便说一句,您的问题必须非常具体...“如果昵称“User1”在 test.txt 中”...“它将检测到 User1 在 test.txt 中!” 我很确定,这不合逻辑。能否请您在test.txt
上发布第一行?
@OrelEraki text.txt的第一行是“User12”,触发命令的昵称是“User1”
test.txt 中还有什么?只是包含“User12”的第一行?
【参考方案1】:
您的问题是User1
在第一行包含User12
,而您正在搜索isin
。
您可以使用带有 \b 字边界的正则表达式 $+(\b,$nick,\b)
来确保搜索的 $nick
on *:TEXT:*text*:#:
var %line = $read(test.txt, 1)
if ($regex(%line, $+(\b,$nick,\b)))
msg $chan working.
【讨论】:
你也在用 php 编程吗?使用 ”;”设置变量值后... jk 正则表达式答案 整天在 .NET 中进行编程对我造成了影响。【参考方案2】:另一种使它起作用的方法是使用标识符 $istok...
on *:TEXT:*text*:#:
if ($istok($nick,$read(test.txt,1),32))
msg $chan working.
由于它只会在特定字符串中搜索特定标记... $istok 标识符将与 \b****\b Regex Boundary
进行相同的匹配【讨论】:
寻求另一种解决方案,特别是非正则表达式。 “,32”是干什么用的? mIRC 帮助文件:$istok(text,token,C) 如果令牌存在则返回 $true,否则返回 $false。 “32”代表空格字符的ASCII码,用作分隔符 您是否只是稍微更改了 test.txt 中的内容?即使是看不见的字符也数...... 它显然从来没有工作,我无法测试它,其他用户的解决方案有效。以上是关于如果 nick 在文本文件第 x 行的主要内容,如果未能解决你的问题,请参考以下文章