我想以标准方式格式化人名的首字母。首字母中的每个字母都应该是大写字母,每个字母(从第一个到第一个字母)必须后跟一个点。像这样:
JKP => J.K.P.
jkp => J.K.P.
J.KP => J.K.P.
JK.P => J.K.P.
JKP. => J.K.P.
J.K.P => J.K.P.
etc...
你有解决方案吗?
答案 0 :(得分:2)
由于我们不知道您在使用哪种语言,因此需要执行一些伪代码:
replace all dots in the string with ''
split the string into a character array
join the character array with a '.' and make it uppercase
答案 1 :(得分:2)
PHP等价物:
$array = array (
'JKP',
'jkp',
'j.kp',
'jk.p',
'jkp.',
'j.k.p.',
);
foreach ($array as $s)
{
echo strtoupper (preg_replace ('/(\w)\W*/', '\1.', $s)), "\n";
}
答案 2 :(得分:1)
这是一个java解决方案:str.toUpperCase().replaceAll("(?<=\\w)(?!=\\.)", ".")
已解码,(?<=\w)(?!=\.)
表示匹配前一个字符为单词字符且下一个字符不是点的字符
你应该能够将这个正则表达式适应你的语言,无论是什么。
已编辑:要合并@Qtax建议。
答案 3 :(得分:1)
这是一个Perl解决方案:
my @list = qw/JKP jkp J.KP JK.P JKP. J.K.P/;
for(@list){
s/\w(?!\.)/$&./g;
my $result = uc;
print "$result\n";
}
s/\w(?!\.)/$&./g
用.
取代所有“单词”字符后面没有.
,然后用uc
取代大写字母。