Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
第n次出现大写字母后的c#regex_C#_.net_Regex - Fatal编程技术网

第n次出现大写字母后的c#regex

第n次出现大写字母后的c#regex,c#,.net,regex,C#,.net,Regex,我在C#中的正则表达式方面遇到了困难。 我有一个名称和姓氏的连接字符串,只需要名称和姓氏的第一个字母: string input = "NameSurname"; string output = "NSurname"; 所以基本上它总是输入字符串的第一个字母,加上第二个大写字母之后的字母 提前感谢您的帮助。您必须使用正则表达式吗?使用Linq可能更容易 例如: var charsFromSecondUppercaseChar = input.Skip(1).SkipWhile(c =>

我在C#中的正则表达式方面遇到了困难。 我有一个名称和姓氏的连接字符串,只需要名称和姓氏的第一个字母:

string input = "NameSurname";
string output = "NSurname";
所以基本上它总是输入字符串的第一个字母,加上第二个大写字母之后的字母


提前感谢您的帮助。

您必须使用正则表达式吗?使用Linq可能更容易

例如:

var charsFromSecondUppercaseChar = input.Skip(1).SkipWhile(c => !char.IsUpper(c));
string output = input[0] + new string(charsFromSecondUppercaseChar.ToArray());

我不知道为什么人们对这些帖子投反对票

试试这个

var name = Regex.Replace("NameSurname", @"^(\w)[^A-Z]*(.*)", "$1$2")
^(\w)匹配第一个字符并将其保留在$1中

[^A-Z]*匹配任何不是大写字母的后续字符

(*)匹配所有后续字符并将其保留在$2中


因此,我们用$1=“N”+$2=“姓氏”

替换“nameurname”,不知道是谁对答案投了反对票,但如果他们解释了答案的错误,肯定会有所帮助。@MatthewWatson 5年36k。。。这不明显吗?所以不是一个雷格克斯机械土耳其人。问题是懒惰的,这样的回答只会助长懒惰。这里没有编程问题,也没有解决方案——没有教学,没有学习,没有解释,也没有帮助将来遇到类似问题的人。一路上都是废话——“为我做我的工作”。@J。。。我没有说我不知道原因,但投反对票的不是我,所以不由我来解释。我只是指出,这对那些已经5年没有来过这里的人来说是有用的。你能看出其中的区别吗?我把这个网站看作是一个帮助和教育人们的地方,而不是默默地斥责他们不知道所有的规则……谢谢@MathewWatson。你说得对——建设性的评论比否决票有用得多。在理解了这个问题后,我修改了我的答案,使之具有启发性。