如果 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 行的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS 调整换行文本的大小 [重复]

如何创建带有两行文本且第一行文本大于第二行的 UIButton?

AS3:如何将数据网格中的数据保存到逐行文本文件中?

模糊寻找文本行子程序,返回以换行符分隔的文本

更改 UIPicker 的行颜色或行文本颜色

使用 Apache Pig 从文本文件中获取备用行