如何删除单词开头的空白?

问题描述

通过浏览与先前有关“如何大写首字母”的问题相关的常见问题解答,我找到了许多我想尝试解决的有趣的解决方案,但是还有一个更紧迫的问题需要解决,在到达那里之前。

我的问题是我无法从每行名称的开头删除空格。名称包括名字和姓氏。姓大写。我尝试使用由Brian D Foy编辑的FAQ中找到的解决方案,但是无论我如何尝试,我都会得到Use of uninitialised value $_ in substitution (s///) at ...

我的代码是这样的:

open DATA,“<“,“name.txt”;
my @file = <DATA>;

for each my $name (@file) {
    chomp $name;
    my @arr;
    
    # find ‘Mr.’ and ‘Ms.’,then ignore them
    @arr = split(/M.\.\s/g,$name);
    
    # remove leading white space from first names
    @arr = s/^\s+//g;

    print @arr,”\n”;
}

这是练习的一部分。我的解决方案与作者自己的解决方案几乎没有相似之处。在这里,我实际上应该将每个名字的首字母大写。我无法通过当前的问题来完成练习。尽管代码对于实现既定目标而言是很长的,但在尝试找到实现相同结果的更简洁方法之前,我想利用学习助手中介绍的方法。就目前而言,我将非常清楚我为什么收到错误消息以及为什么我不能删除空白。谢谢。

解决方法

您可以从正则表达式的名称中删除空格。

因此您的代码将变为:

open DATA,"<","name.txt";
my @file = <DATA>;

foreach my $name (@file) {
    chomp $name;

    # find ‘Mr.’ and ‘Ms.’,then ignore them
    my @arr = split(/M.\.\s+/g,$name);

    print @arr,"\n";
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...