用空格修剪字符串

Ste*_*ris 3 regex perl

我想帮助解析一些某人的名字.我想取字符串并删除它,以便只有第一个名字将在字符串中.

假设我有这样的名字

Mr. John Doe
John Smith.
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我只想获取字符串的第一个名称并删除所有其他字符.

因此,对于两个字符串,在它们被解析之后将会有John它们

我想知道是否有办法用正则表达式来解决这个问题.

Gil*_*il' 6

你不能这样做.不是因为你已经破坏了他们的名字而烦恼了一些人.你无法区分John Paul Doe(名字"John",中间名"Paul",姓氏"Doe"),John Joseph Brown("Joseph"或"Joe"的答案,但只使用"John"政府形式)和约翰保罗史密斯(名字"约翰保罗",并讨厌缩短它).

去读Falsehoods程序员相信名字.

然后再读一遍,这次接受,是的,世界上95%的人口对你的名字有一个完全不同的想法.(如果你是中国人,则为80%.)

你能做的最多就是截断空格,也许还有一些像"先生"这样的"安全"前缀 - 我甚至不会这样做(如果有人打扰写"先生",他们可能会喜欢在那里写).

s/^\s+//; s/\s+$//;     # trim whitespace at each end
s((\s+))(               # trim embedded whitespace
    $1=~/[^\x{a0}]/ ?   # breakable?
    " " : "\x{a0}")ge;
Run Code Online (Sandbox Code Playgroud)

  • 这篇文章高度夸大了这个问题.它还假设OP拥有全球受众.它应该编辑,以便可能更多地询问观众和各种格式,并更加轻柔地描述警告**特别是95%???**我甚至不知道20%甚至5%符合该规则. (3认同)