如何强制文本为大写除了选择性字符串c#

时间:2017-01-03 15:00:22

标签: string toupper

C#:

string mystring = "Hello World. & my name is < bob >. Thank You."
Console.Writeline(mystring.ToUpper())

我试图让所有文字都是大写的,除了 -

&  <  > 

因为这些是我的编码,编码不会起作用,除非文本是小写的。

1 个答案:

答案 0 :(得分:1)

您可以用空格分割字符串,将所有不以&开头的项目转到上面,然后保持原样,然后再加入一个字符串:

string mystring = "Hello World. & my name is < bob >. Thank You.";
string result = string.Join(" ", mystring.Split(' ').Select(m => m.StartsWith("&") ? m : m.ToUpper()));

enter image description here

另一种方法是使用正则表达式匹配&,1 +单词字符,然后匹配;,并匹配并捕获其他1个字的字符块,并仅将大小写成大写第1组:

var result = System.Text.RegularExpressions.Regex.Replace(mystring, 
    @"&\w+;|(\w+)", m => 
           m.Groups[1].Success ? m.Groups[1].Value.ToUpper() :
           m.Value
);