【发布时间】:2016-10-15 07:37:22
【问题描述】:
基本上...
我正在尝试对字符串执行自定义大写;我花了几个小时与 Regex 战斗,但无济于事......
要求:
我需要大写:
- 如果第一个单词 >3 个字符:第一个单词的第一个字母。
- 如果最后一个单词 >3 个字符:最后一个单词的第一个字母。
- 始终:连字符或撇号后的第一个字母。
(最终的正则表达式需要在 VB6 中实现)
Examples:
anne-marie > Anne-Marie // 1st letter of first word + after hyphen
vom schattenreich > vom Schattenreich // 1st letter of last word
will it work-or-not > Will it Work-Or-Not // 1st letter of outer words + after hyphens
seth o'callaghan > Seth O'Callaghan // 1st letter of outer words + after apostrophe
first and last only > First and last Only // 1st letter of outer words (excl. middle)
sarah jane o'brien > Sarah jane O'Brien // 1st letter of outer words (excl. middle)
到目前为止我的收获:
我将两个正则表达式拼凑在一起,它们之间几乎可以完成我所需要的。然而,我尝试将它们合并到单个正则表达式中或将其编写为一个正则表达式都失败了。
我的主要困难是我的部分大写仅适用于第一个和最后一个单词,而标点符号特定的大写需要适用于整个字符串。但我对正则表达式的了解还不够,无法确定是否可以使用一个表达式。
我的正则表达式:
First letter of First and Last words 但不限于超过 3 个字符的单词,并且不处理完整的字符串标点符号大写
^([a-zA-Z]).*\s([a-zA-Z])[a-zA-Z-]+$
First letter of all words, and after punctuation, where more than 3 chars 但不排除中间词,或在末尾处理标点符号
(\b[a-zA-Z](?=[a-zA-Z-']{3}))
问题
如何结合这两个正则表达式来满足我的要求,或者更正它们以使它们可以单独使用?或者提供满足要求的不同正则表达式。
参考/相关源材料:
Regex capitalize first letter every word, also after a special character like a dash
First word and first letter of last word of string with Regex
【问题讨论】:
标签: regex string replace vb6 capitalization