我在C#中使用正则表达式很难。 我有一个带名字和姓氏的连接字符串,只需要名字的第一个字母和姓氏:
string input = "NameSurname";
string output = "NSurname";
所以基本上它始终是输入字符串的第一个字母,再加上大写字母第二次出现后的字母。
提前感谢您的帮助。
答案 0 :(得分:1)
我不知道为什么人们会对这些帖子进行投票。
试试这个
var name = Regex.Replace("NameSurname", @"^(\w)[^A-Z]*(.*)", "$1$2")
^(\ w)匹配第一个字符并将其保留在$ 1。
[^ A-Z] *匹配任何不是大写字母的后续字符。
(。*)匹配所有后续字符并将其保留在$ 2中。
所以我们取代" NameSurname" $ 1 =" N" + $ 2 ="姓氏"
答案 1 :(得分:0)
你必须使用正则表达式吗?使用Linq可能更容易。
例如:
var charsFromSecondUppercaseChar = input.Skip(1).SkipWhile(c => !char.IsUpper(c));
string output = input[0] + new string(charsFromSecondUppercaseChar.ToArray());