Perl 检查字符串中的点
我很难检查csv文件中的特定列是否包含点 其背后的想法是,我必须合并两个栏目,即人名和姓氏。但在某些情况下,列中没有名字或姓氏Perl 检查字符串中的点,perl,Perl,我很难检查csv文件中的特定列是否包含点 其背后的想法是,我必须合并两个栏目,即人名和姓氏。但在某些情况下,列中没有名字或姓氏 为什么我需要知道它们是否是点?因为名字都是全名的缩写版本。perl的优势之一是它的正则表达式引擎。使用正则表达式检查点的存在是很容易的,尽管有点过分了。例如: #! /usr/bin/perl use strict; use 5.0100; my $dotstring = "foo.bar"; my $nondotstring = "foodotbar"; fore
为什么我需要知道它们是否是点?因为名字都是全名的缩写版本。perl的优势之一是它的正则表达式引擎。使用正则表达式检查点的存在是很容易的,尽管有点过分了。例如:
#! /usr/bin/perl
use strict;
use 5.0100;
my $dotstring = "foo.bar";
my $nondotstring = "foodotbar";
foreach ( $dotstring, $nondotstring ) {
if ( $_ =~ /\./ ) {
say "There's a dot in $_";
}
else {
say "There's no dot in $_";
}
}
这只是一个通用示例,您需要自己将其放入CSV解析中。用于检查字符串中的子字符串。如果未找到匹配项,它将返回从0或-1开始的第一个匹配项的位置:
print index '.abc', '.'; # 0
print index 'abc.def', '.'; # 3
print index 'abc', '.'; # -1
if (index ($string, '.') >= 0) {
# Do something
}
使用Text::CSV::Slurp读取文件,然后遍历结果行,查看name列是否包含点
my $data = Text::CSV::Slurp->load( file => ... )
for my $record (@$data) {
if ($record->{Naam} =~ /\./) {
### Handle case here...
...
}
}
你能不能提供一个完整的源代码示例来说明你尝试过什么?我什么都没试过,我不是一个perl方面的天才,我在这方面的谷歌搜索几乎没有。