如何检测字符串的大小写(小写、大写、CamelCase[,可能是WhATevERcAse])以应用于另一个字符串?
我想和塞德一条线或者别的什么的。
这是用于拼写检查,提出更正。
假设我得到了类似string_to_fix的东西:更正:BEHAVIOUR:behavior
=>获取BEHAVIOUR:BEHAVIOR
Behaviour:behavior
=>获取Behaviour:Behavior
behaviour:behavior
=>保持behaviour:behavior
需要处理的额外案件:MySpecalCase:myspecialcase
=>MySpecalCase:MySpecialCase
(因此字符是参考点,而不是单词中的位置)
最佳答案
使用GNU sed:
sed -r 's/([A-Z]+):(.*)/\1:\U\2/;s/([A-Z][a-z]+):([a-z])/\1:\U\2\L/' file
说明:
s/([A-Z]+):(.*)/\1:\U\2/
:搜索小于或等于:
的大写字母,并使用反引用和大写修饰符\U
,将:
之后的字母更改为大写s/([A-Z][a-z]+):([a-z])/\1:\U\2\L/
:搜索以大写字母开头的单词,如果找到,则将:
之后的第一个字母替换为大写关于regex - 检测字符串大小写并应用于另一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41217920/