如果 nick 在文本文件第 x 行
If nick isin text file line x
我的当前代码有问题。
on *:TEXT:*text*:#:{
if ($nick isin $read(test.txt, 1)) {
msg $chan working.
}
}
我遇到的问题是,如果昵称 "User1" 在 test.txt 中,并且 "User12" 键入文本,它将检测到它,因为 User1 在 test.txt 中!如果 "User1" 在第 1 行,我怎样才能做到 "User12" 不会说工作。
你的问题是 User1
包含在第一行 User12
而你正在搜索 isin
。
您可以使用带有 \b 字边界的正则表达式 $+(\b,$nick,\b)
来确保在搜索的 $nick[ 之前或之后没有文本=22=]
on *:TEXT:*text*:#:{
var %line = $read(test.txt, 1)
if ($regex(%line, $+(\b,$nick,\b))) {
msg $chan working.
}
}
另一种方法是使用标识符 $istok...
on *:TEXT:*text*:#:{
if ($istok($nick,$read(test.txt,1),32)) {
msg $chan working.
}
}
因为它只会在特定字符串中搜索特定标记... $istok 标识符将与 \b****\b Regex Boundary 进行相同的匹配
我的当前代码有问题。
on *:TEXT:*text*:#:{
if ($nick isin $read(test.txt, 1)) {
msg $chan working.
}
}
我遇到的问题是,如果昵称 "User1" 在 test.txt 中,并且 "User12" 键入文本,它将检测到它,因为 User1 在 test.txt 中!如果 "User1" 在第 1 行,我怎样才能做到 "User12" 不会说工作。
你的问题是 User1
包含在第一行 User12
而你正在搜索 isin
。
您可以使用带有 \b 字边界的正则表达式 $+(\b,$nick,\b)
来确保在搜索的 $nick[ 之前或之后没有文本=22=]
on *:TEXT:*text*:#:{
var %line = $read(test.txt, 1)
if ($regex(%line, $+(\b,$nick,\b))) {
msg $chan working.
}
}
另一种方法是使用标识符 $istok...
on *:TEXT:*text*:#:{
if ($istok($nick,$read(test.txt,1),32)) {
msg $chan working.
}
}
因为它只会在特定字符串中搜索特定标记... $istok 标识符将与 \b****\b Regex Boundary 进行相同的匹配