如何拆分三个不同的分隔符然后ucfirst每个结果[]?

Jim*_*_Bo 2 perl split delimiter

我试图弄清楚如何在没有一百万行代码的情况下拆分具有三个可能的分隔符(或没有)的字符串,但代码对于像我这样的人来说仍然清晰可辨.

字符串中有许多可能的组合.

    this-is_the.string
    this.is.the.string
    this-is_the_string
    thisisthestring
Run Code Online (Sandbox Code Playgroud)

字符串中没有空格,也没有这些字符:

 ~`!@#$%^&*()+=\][{}|';:"/?>,<.
Run Code Online (Sandbox Code Playgroud)

该字符串已被删除,但:

0-9
a-Z
-
_ 
.
Run Code Online (Sandbox Code Playgroud)

也没有连续的点,破折号或下划线.

我希望结果显示为Result:

This Is The String
Run Code Online (Sandbox Code Playgroud)

我真的很难想要实现这一目标.我相信我需要使用哈希,即使经过数小时的反复试验,我也没有理解这个概念.

令我感到困惑的是,我可能会在多个分隔符上分割一个字符串,其中分隔符可以按任何顺序和/或三种不同的类型(或根本没有)并保持结果的顺序!

任何可能性?

ike*_*ami 6

将字符串拆分为单词,将单词大写,然后在单词之间插入空格时加入单词.

它可以非常简洁地编码:

my $clean = join ' ', map ucfirst lc, split /[_.-]+/, $string;
Run Code Online (Sandbox Code Playgroud)

如果您只想打印出结果,可以使用

use feature qw( say );
say join ' ', map ucfirst lc, split /[_.-]+/, $string;
Run Code Online (Sandbox Code Playgroud)

要么

print join ' ', map ucfirst lc, split /[_.-]+/, $string;
print "\n";
Run Code Online (Sandbox Code Playgroud)

  • 不,它没有,它使得它非常清晰,没有不必要的噪音,*假设读者知道Perl*,无论如何必须是假设.这是PBP提供愚蠢建议的众多案例之一. (5认同)
  • @edb,PBP的许多建议都是错误的或情境化的.在那本书中出现的东西不是一个论点,它的作者将是第一个告诉你的. (3认同)