c#regex在第n次出现大写字母后的所有内容

时间:2015-03-18 09:16:58

标签: c# .net regex

我在C#中使用正则表达式很难。 我有一个带名字和姓氏的连接字符串,只需要名字的第一个字母和姓氏:

string input = "NameSurname";
string output = "NSurname";

所以基本上它始终是输入字符串的第一个字母,再加上大写字母第二次出现后的字母。

提前感谢您的帮助。

2 个答案:

答案 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());