【发布时间】:2011-03-29 07:18:23
【问题描述】:
如何将文本中的第一个字母设置为大写?
例子:
it is a text. = It is a text.
【问题讨论】:
-
字符串可以是
"99c waffles"之类的东西,而你想得到"99c Waffles"吗?也就是说,你对“首字母”的定义是什么?
标签: c#
如何将文本中的第一个字母设置为大写?
例子:
it is a text. = It is a text.
【问题讨论】:
"99c waffles" 之类的东西,而你想得到"99c Waffles" 吗?也就是说,你对“首字母”的定义是什么?
标签: c#
public static string ToUpperFirstLetter(this string source)
{
if (string.IsNullOrEmpty(source))
return string.Empty;
// convert to char array of the string
char[] letters = source.ToCharArray();
// upper case the first char
letters[0] = char.ToUpper(letters[0]);
// return the array made of the new char array
return new string(letters);
}
【讨论】:
source.ToCharArray()。字符串已经是一个 char 数组,可以仅使用 source[0] 进行索引。
if (string.IsNullOrEmpty(source)) return source;而不是string.Empty吗? :D
ToUpperFirstLetter重命名为ToUpperFirstCharacter,这是一个更相关的名称:)
会是这样的:
// precondition: before must not be an empty string
String after = before.Substring(0, 1).ToUpper() + before.Substring(1);
【讨论】:
如果您使用的是 C#,请尝试以下代码:
Microsoft.VisualBasic.StrConv(sourceString, Microsoft.VisualBasic.vbProperCase)
【讨论】:
text = new String(
new [] { char.ToUpper(text.First()) }
.Concat(text.Skip(1))
.ToArray()
);
【讨论】:
polygenelubricants 的回答在大多数情况下都很好,但您可能需要考虑文化问题。您希望在当前文化或特定文化中以文化不变的方式将其大写吗?例如,它可以在土耳其产生重大影响。所以你可能要考虑:
CultureInfo culture = ...;
text = char.ToUpper(text[0], culture) + text.Substring(1);
或者如果您更喜欢String 上的方法:
CultureInfo culture = ...;
text = text.Substring(0, 1).ToUpper(culture) + text.Substring(1);
其中culture 可能是CultureInfo.InvariantCulture,或当前文化等。
有关此问题的更多信息,请参阅Turkey Test。
【讨论】:
我意识到这是一个旧帖子,但是我最近遇到了这个问题并用以下方法解决了。
private string capSentences(string str)
{
string s = "";
if (str[str.Length - 1] == '.')
str = str.Remove(str.Length - 1, 1);
char[] delim = { '.' };
string[] tokens = str.Split(delim);
for (int i = 0; i < tokens.Length; i++)
{
tokens[i] = tokens[i].Trim();
tokens[i] = char.ToUpper(tokens[i][0]) + tokens[i].Substring(1);
s += tokens[i] + ". ";
}
return s;
}
在下面的示例中,单击按钮会执行这个简单的代码outBox.Text = capSentences(inBox.Text.Trim());,它会在上面的方法运行后从上框中提取文本并将其放入下框中。
【讨论】:
static String UppercaseWords(String BadName) { 字符串全名 = "";
if (BadName != null)
{
String[] FullBadName = BadName.Split(' ');
foreach (string Name in FullBadName)
{
String SmallName = "";
if (Name.Length > 1)
{
SmallName = char.ToUpper(Name[0]) + Name.Substring(1).ToLower();
}
else
{
SmallName = Name.ToUpper();
}
FullName = FullName + " " + SmallName;
}
}
FullName = FullName.Trim();
FullName = FullName.TrimEnd();
FullName = FullName.TrimStart();
return FullName;
}
【讨论】:
试试这个代码 sn-p:
char nm[] = "this is a test";
if(char.IsLower(nm[0])) nm[0] = char.ToUpper(nm[0]);
//print result: This is a test
【讨论】:
这个函数使大写成为字符串中所有单词的首字母
public static string FormatSentence(string source)
{
var words = source.Split(' ').Select(t => t.ToCharArray()).ToList();
words.ForEach(t =>
{
for (int i = 0; i < t.Length; i++)
{
t[i] = i.Equals(0) ? char.ToUpper(t[i]) : char.ToLower(t[i]);
}
});
return string.Join(" ", words.Select(t => new string(t)));;
}
【讨论】:
我使用这个变体:
private string FirstLetterCapital(string str)
{
return Char.ToUpper(str[0]) + str.Remove(0, 1);
}
【讨论】:
从单词中取出第一个字母,然后将其提取到另一个字符串中。
strFirstLetter = strWord.Substring(0, 1).ToUpper();
strFullWord = strFirstLetter + strWord.Substring(1);
【讨论】:
string str = "it is a text";
//首先使用.Trim()方法去掉开头和结尾所有不必要的空格,例如("This string".Trim()会输出"This string")。
str = str.Trim();
char theFirstLetter = str[0]; // 这一行是在索引 0 处取字符串的第一个字母。
theFirstLetter.ToUpper(); // .ToTupper() 方法将首字母大写。
str = theFirstLetter + str.substring(1); // 我们添加我们大写的第一个字母并添加字符串的其余部分,使用 str.substring(1) (str.substring(1) 跳过索引 0 处的第一个字母并且只打印从索引 1 到最后一个索引的字母。)
Console.WriteLine(str); // 现在应该输出“It is a text”
【讨论】: