簡體   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