Как первая буква в тексте может быть установлена в капитал?
Пример:
it is a text. = It is a text.
Как первая буква в тексте может быть установлена в капитал?
Пример:
it is a text. = It is a text.
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);
}
Это будет примерно так:
// precondition: before must not be an empty string
String after = before.Substring(0, 1).ToUpper() + before.Substring(1);
Ответ на полигенные смазки в большинстве случаев хорош, но вам, возможно, нужно подумать о культурных проблемах. Вы хотите, чтобы это капитализировалось культурно-инвариантным способом, в современной культуре или определенной культуре? Например, это может иметь большое значение в Турции. Поэтому вы можете подумать:
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.
Если вы используете С#, попробуйте этот код:
Microsoft.VisualBasic.StrConv(sourceString, Microsoft.VisualBasic.vbProperCase)
Я понимаю, что это старый пост, но я недавно столкнулся с этой проблемой и решил ее с помощью следующего метода.
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());
, который вытягивает текст из верхнего поля и помещает его в нижнее поле после того, как указанный выше метод запускается на нем.
Я использую этот вариант:
private string FirstLetterCapital(string str)
{
return Char.ToUpper(str[0]) + str.Remove(0, 1);
}
text = new String(
new [] { char.ToUpper(text.First()) }
.Concat(text.Skip(1))
.ToArray()
);
static String UppercaseWords (String BadName) { String FullName = "";
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;
}
эти функции делают капитал первой буквой всех слов в строке
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)));;
}
Попробуйте этот фрагмент кода:
char nm[] = "this is a test";
if(char.IsLower(nm[0])) nm[0] = char.ToUpper(nm[0]);
//print result: This is a test