关于c#:我怎样才能将字符串中所有单词的第一个字母大写?

How can I uppercase the first letter of all words in my string?

首先,我所有的城市都以大写形式返回,所以我将它们切换为小写。我现在怎么能把第一个字母大写?谢谢你的帮助!

1
2
3
4
5
6
7
8
9
10
11
List<string> cities = new List<string>();

foreach (DataRow row in dt.Rows)
{
    cities.Add(row[0].ToString().ToLower());

    **ADDED THIS BUT NOTHING HAPPENED**
     CultureInfo.CurrentCulture.TextInfo.ToTitleCase(row[0] as string);
}

return cities;


Use the textinfo.totitlecase method:

1
System.Globalization.TextInfo.ToTitleCase();

a bit from the MSDN example,modified to work with op's code:

1
2
3
4
5
6
7
8
// Defines the string with mixed casing.
string myString = row[0] as String;

// Creates a TextInfo based on the"en-US" culture.
TextInfo myTI = new CultureInfo("en-US", false).TextInfo;

// Retrieve a titlecase'd version of the string.
string myCity = myTI.ToTitleCase(myString);

All in one line:

1
string myCity = new CultureInfo("en-US", false).TextInfo.ToTitleCase(row[0] as String);


我知道我在这里复活了一个幽灵但我也有同样的问题想分享我认为最好的解决办法有一些方法你可以做到这一点,它们会分割弦并重新编排第一封信,或者将它变成一个坦克阵列,以提高性能。最好的表现,尽管,来使用一个正常的表达方式。

你可以用一个符号的符号来找到每个字的第一个字母。你的模式是一个字符串的开始,而你的字符串是一个字符串。使用匹配评价代表(或等值的兰巴达表达)来调整弦(第一个特征,你的模式发现)。

这是一种延伸方法,将在一条弦上的每一个字的第一封信中:

1
2
3
4
static string UpperCaseFirst(this string input)
{
    return Regex.Replace(input, @"\b\w", (Match match)=> match.ToString().ToUpper())
}


雷克斯可能看起来是一个长的比特,但工作

1
2
3
4
5
6
7
8
9
10
List<string> cities = new List<string>();

foreach (DataRow row in dt.Rows)
{
    string city = row[0].ToString();
    cities.Add(String.Concat(Regex.Replace(city,"([a-zA-Z])([a-zA-Z]+)","$1").ToUpper(System.Globalization.CultureInfo.InvariantCulture), Regex.Replace(city,"([a-zA-Z])([a-zA-Z]+)","$2").ToLower(System.Globalization.CultureInfo.InvariantCulture)));

}

return cities;

1
new CultureInfo("en-US",false).TextInfo.ToTitleCase(myString);

这是你可以使用的扩展方法。它支持当前的文化,或者让你走进文化。

To use:

cities.Add(row[0].ToString().ToTitleCase()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static class StringExtension
{
    /// <summary>
    /// Use the current thread's culture info for conversion
    /// </summary>
    public static string ToTitleCase(this string str)
    {
        var cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
        return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
    }

    /// <summary>
    /// Overload which uses the culture info with the specified name
    /// </summary>
    public static string ToTitleCase(this string str, string cultureInfoName)
    {
        var cultureInfo = new CultureInfo(cultureInfoName);
        return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
    }

    /// <summary>
    /// Overload which uses the specified culture info
    /// </summary>
    public static string ToTitleCase(this string str, CultureInfo cultureInfo)
    {
        return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
    }
}

1
2
3
4
5
6
7
8
9
10
    public static string UppercaseFirst(string value)
    {
        // Check for empty string.
        if (string.IsNullOrEmpty(value))
        {
            return string.Empty;
        }
        // Return char and concat substring.
        return char.ToUpper(value[0]) + value.Substring(1);
    }

Cities.Select(Uppercasefirst).Tolist();


这是快速小方法

1
2
3
4
5
6
7
public string UpperCaseFirstLetter(string YourLowerCaseWord)
{
    if (string.IsNullOrEmpty(YourLowerCaseWord))
        return string.Empty;

    return char.ToUpper(YourLowerCaseWord[0]) + YourLowerCaseWord.Substring(1);
}


你可以使用这一方法(或创建一个扩展方法)

1
2
3
4
5
6
7
8
9
10
11
static string UpperCaseFirst(this string s)
{
    // Check for empty string.
    if (string.IsNullOrEmpty(s))
    {
        return string.Empty;
    }

    // Return char and concat substring.
    return char.ToUpper(s[0]) + s.Substring(1);
}

With Linq:

ZZU1

  • Gently stolen from this post:how to lower case a string except for first character with C 350;