我试图将位于第一个空格后面的字符串中的第一个字母大写:
string name = "Jeffrey steinberg";
我试图用steinberg中的S大写。我不知道该怎么做。我曾经尝试过使用toupper功能,但不知道如何引用角色" s"因为c#字符串不是像c。
那样的数组答案 0 :(得分:5)
您可以使用TitleCase:
perf
答案 1 :(得分:1)
string name = "Jeffrey steinberg";
TextInfo myTI = new CultureInfo("en-US",false).TextInfo;
myTI.ToTitleCase(name)
有些文化并没有使ToTitleCase发挥作用,所以最好使用en-us来制作标题。
答案 2 :(得分:0)
您可以尝试使用ToTitleCase函数,因为它比搜索字符串中的空格更好,并将下一个字母大写。
例如:
string s = "Jeffrey steinberg smith";
TextInfo ti = CultureInfo.CurrentCulture.TextInfo;
string uppercase = ti.ToTitleCase(s);
Result: Jeffrey Steinberg Smith
答案 3 :(得分:0)
这不是真的
c#字符串不是像c。
那样的数组
他们是[]char
。你可以迭代它们,获得长度等。也是不可改变的。见MSDN:
值为文本的字符串。在内部,文本存储为Char对象的顺序只读集合。
本着上下文的精神,这种(我同意非最优雅的)解决方案应该适用于长姓:
public static string GetTitleCase(string fullName)
{
string[] names = fullName.Split(' ');
List<string> currentNameList = new List<string>();
foreach (var name in names)
{
if (Char.IsUpper(name[0]))
{
currentNameList.Add(name);
}
else
{
currentNameList.Add(Char.ToUpper(name[0]) + name.Remove(0, 1));
}
}
return string.Join(" ", currentNameList.ToArray()).Trim();
}
答案 4 :(得分:0)
如果要替换字符串中的单个字符,则不能对该字符串替换字符数组中的元素。 NET中的字符串是不可变的。这意味着您无法更改它们,您只能使用它们来生成新的字符串。然后,您可以将此新字符串分配给包含源字符串的同一变量,从而有效地将旧字符串替换为新字符串
在您的情况下,您确认您只想更改输入字符串第二个单词的第一个字符。然后你可以写
// Split the string in its word parts
string[] parts = name.Split(' ');
// Check if we have at least two words
if(parts.Length > 1)
{
// Get the first char of the second word
char c = parts[1][0];
// Change char to upper following the culture rules of the current culture
c = char.ToUpper(c, CultureInfo.CurrentCulture);
// Create a new string using the upper char and the remainder of the string
parts[1] = c + parts[1].Substring(1);
// Now rebuild the name with the second word first letter changed to upper case
name = string.Join(" ", parts);
}
答案 5 :(得分:0)
我使用以下snippit工作:
static void Main(string[] args)
{
int index;
string name = "Jefferey steinberg";
string lastName;
index = name.IndexOf(' ');
lastName = name[index+1].ToString().ToUpper();
name = name.Remove(index + 1, 1);
name = name.Insert(index + 1, lastName);
Console.WriteLine(name);
Console.ReadLine();
}
有更好的方法吗?