【发布时间】:2021-01-24 18:22:12
【问题描述】:
我有两个数组,一个包含来自错误日志的长字符串,另一个包含单词列表。我需要查找,其中一个词是否与任何错误字符串匹配。我想使用 index()。
我拥有的是:
@park 是一整页,一行一行。我剪下第 1 行并将其放入 $err1
@omit 是从文件中读取的单词列表。包含“Kein Zugriffsrecht”、“违反约束”等。我从一个数组中逐行获取(用chomp()处理)并将其放入$fehler。
while (@park){
my $i = $#park;
$zeile1 = splice (@park,$i,1);
@foo1 = split(";", $zeile1);
$err1 = $foo1[1];
for my $b (0..$#omit){
$prob1 = 0;
$fehler = $omit[$b];
# $fehler="constraint violation";
$prob1 = index ($err1, $fehler);
...
}
重点是,$prob1 = index ($err1, $fehler); 总是 给出 -1(未找到)。如果我将$fehler 设置为“违反约束”之类的东西,就像上面注释的行一样,index() 将给出正确的数字。
什么可能导致这种行为?
问候
【问题讨论】:
-
我的代码一半是德语,一半是英语,我会发疯的。你如何设法不把东西混在一起?特别是
$err1和$fehler。如果你在 $work 上把它交给我来审查,我们可能会在周五下午进行不愉快的聊天。 - 说真的,欢迎来到 Stack Overflow。请花点时间阅读How to Ask 并提供minimal reproducible example。本质上,请edit 您的问题并为@park和@omit提供一些示例数据。谢谢! :) -
@omit的元素是否有尾随换行符? (即,你有没有打电话给index($err1,"constraint violation\n")?) -
你远远领先于你应该达到的位置。 “我想使用 index()”是你做错了什么的明确信号。 (因为没有人真正想要使用索引)备份 10 步然后寻求帮助。
-
@TLP 绝对可以与那种情绪相关,但如果他们真的想要只是子字符串的索引,那么
index就是工具(并且比启动正则表达式引擎快得多) -
如果你能提供一些样本数据——很少会做——那么我们就能弄清楚为什么
index会失败
标签: arrays perl string-matching