繁体   English   中英

除了任何单词的第一个字母,我如何将字符串中的两个字母的单词都大写?

[英]How do I capitalized any two letter word in a string in addition to the first letter of any word?

我需要将字符串中每个单词的首字母大写,并且如果单词的长度为两个,还需要将两个字母都大写。

输入示例:

dr. david BOWIE md

示例输出:

Dr. David Bowie MD

我开始时是这样的:

TextInfo tCase = new CultureInfo("en-US", false).TextInfo;
return tCase.ToTitleCase(input.ToLower());

不知道如何实现这一目标。

您可以使用Split and Join尝试一下:

var input = "dr. david BOWIE md";
TextInfo tCase = new CultureInfo("en-US", false).TextInfo;
var result =  tCase.ToTitleCase(input.ToLower());

result = string.Join(" ", result.Split(' ')
               .Select(i => i.Length == 2 ? i.ToUpperInvariant() : i));

输出:

大卫·鲍伊博士

你可以这样做:

TextInfo tCase = new CultureInfo("en-US", false).TextInfo;
string s = "dr. david BOWIE md";
var ss = string.Join(" ", s.Split(' ').Select(u => u.Length == 2 ? u.ToUpper() : tCase.ToTitleCase(u.ToLower())).ToList());
Console.WriteLine(ss);

输出:

大卫·鲍伊博士

String s = "dr. david BOWIE md";
s= ConvertToMyCase(s);


public string ConvertToMyCase(string s)
{
  s = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(s.toLower());
  List<string> my = new List<string>();
  string[] separators = new string[] {",", ".", "!", "\'", " ", "\'s"};
  foreach (string word in s.Split(separators, StringSplitOptions.RemoveEmptyEntries))
  {
    if(word.Length == 2)
    {
       word.ToUpper();
    }
  }
return s;
}
var str = "dr. david BOWIE md";
var strList = new List<string>();
str.Split(' ').ToList().ForEach(s =>
{
    strList.Add(s.Length == 2 ? s.ToUpper() : string.Format("{0}{1}", char.ToUpper(s[0]), s.Substring(1).ToLower()));
});
var output = string.Join(" ", strList.ToArray());
Console.WriteLine(output);

OUTPUT:

Dr. David Bowie MD

我将使用Regex扩展您的解决方案到一个线性解决方案:

string result = Regex.Replace(new CultureInfo("en-US", false).TextInfo.ToTitleCase(input.ToLower()), @"(?i)\b([a-z]{2})(?!.)\b", m => m.ToString().ToUpper());
Console.WriteLine(result);

输出:

Dr. David Bowie MD

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM