2015-06-16 26 views
-1

在C#中,我正在寻找一个非常类似于ToTitleCase的代码,除非我需要它仅影响小写字母。我不希望任何大写字母变成小写字母,我只需要将小写字母正确地带到大写字母。C# - 仅影响小写字母的ToTitleCase?

这是电子商务软件,所以资本成为小写是一个交易断路器。使品牌名称看起来不正确。

任何帮助,将不胜感激!

+0

你想全部大写,你可以告诉你试过吗? – Oluwafemi

+0

从我正在阅读的内容中可以得到像这样的输入,“这是我的公司”,并希望输出为“这是我的公司”我的理解是否正确? –

+0

至少使用我当前的UICulture,TextInfo.ToTitleCase方法不会小写大写已经上部的字母。 '?textInfo.ToTitleCase(“ABC管道”);'返回“ABC管道”。 ''textInfo.ToTitleCase(“这是ABC管道”);'返回 “这是ABC管道” – jac

回答

1

您可以使用一种方法从ToTitleCase()中丢弃不需要的更改。

我使用StringBuilder,而不是一个正常的string这里是因为StringBuilder(你也许可以从它的名字猜到)追加字符串长度超过string+=操作快得多。这是,如果你的标题很长,或者如果你在相当长的循环使用此方法尤其重要,等

public string BetterTitileCase(string original) 
{ 
    string title = /* ToTitleCase call here, etc. */; 

    StringBuilder fixedTitle = new StringBuilder(); 

    //the title and the original string should be the same length 
    for(int i = 0; i < title.length; i++) 
    { 
     if(char.IsLower(original[i])) 
      fixedTitle.Append(title[i]); 
     else 
      fixedTitle.Append(original[i]); 
    } 

    return fixedTitle.ToString(); 
} 
+0

'if'语句倒退 - 应该是'if(original [i] .IsUpper)'。 –

+0

完全正确,固定。 – matan129

+0

您可能想要使用'StringBuilder',否则您可能会在循环中创建一堆字符串。不好。 – sstan