在c#中转换字符串ToTitleCase

时间:2013-11-25 13:01:54

标签: c#

我正在寻找解决问题的方法,这就是我需要的,只是一个例子 我有短语

"ProgrammingIsIntresting"

我需要它来拆分并创建一个像“Programming Is Intresting”这样的字符串。

CultureInfo.CurrentCulture.TextInfo.ToTitleCase在这里工作,但我怎样才能在这里放置空间文字。

这是我所拥有的,似乎我被困在这里。

var UpperChars = mystring.Where(c => Char.IsUpper(c));
                        foreach (var ch in UpperChars)
                        {
                            if (mystring.IndexOf(ch) == 0)
                                continue;

                        }

3 个答案:

答案 0 :(得分:3)

试试这个:

return Regex.Replace(input, "([A-Z])"," $1", RegexOptions.Compiled).Trim();

来自http://weblogs.asp.net/jgalloway/archive/2005/09/27/426087.aspx

或:

var splitted = Regex.Replace("ProgrammingIsIntresting", 
                    @"(\B[A-Z]+?(?=[A-Z][^A-Z])|\B[A-Z]+?(?=[^A-Z]))", " $1");

第二个将处理SQLIsCool示例

答案 1 :(得分:1)

 string myString = "ProgrammingIsIntresting";
 String newString = "";
 char intermediate;
 for (int i = 0; i < myString.Length; i++)
 {
     intermediate = myString[i];
     if(char.IsUpper(intermediate) && (i != 0))
       newString = newString + " " + intermediate.ToString();
     else
       newString = newString + intermediate.ToString();
 } 
 Console.WriteLine(newString);

答案 2 :(得分:0)

另一种可能的方法可能就是我刚试过的方法:

    string a = "IAmVahid";
    List<char> b= new List<char>();
    int j = 0;

    for (int i = 0; i < a.Length; i++)
    {
        if (char.IsUpper(a[i]))
        {
            b.Add(' ');
        }
        b.Add(a[i]);
    }

    ouputTxt.Text = new String(b.ToArray()) ;