我尝试使用List和数组Char []但不能添加它。在这种情况下,我尝试添加result
变量。
我想返回字符串result
:
char[] array = valuesNew.ToCharArray();
string result = "";
for (int i = 1; i < array.Length; i++)
{
if (array[i - 1] == ' ')
{
array[i] = char.ToUpper(array[i]);
result += array[i];
}
}
return new string(result);
但错误如:
无法将字符串转换为char。
在线:
return new string(result);
答案 0 :(得分:4)
如果您只需要每个单词的第一个字母(使用空格作为分隔符),请执行以下操作:
private static string FirstLetters(string text)
{
string[] words = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
return new string(words.Select(x => Char.ToUpper(x[0])).ToArray());
}
static void Main(string[] args)
{
Console.WriteLine(FirstLetters("This is a sentence.")); // Prints "TIAS"
Console.WriteLine(FirstLetters("To dO someThing in HomEWork")); // Prints "TDSIH"
Console.ReadKey();
}
如果出于某种原因你不想使用Linq,你可以这样做(如果彼此相邻有多个空格,那么工作正常):
private static string FirstLetters(string text)
{
string result = string.Empty;
for (int i = 0; i < text.Length - 1; i++)
{
if (text[i] == ' ')
result += Char.ToUpper(text[i + 1]);
}
return result;
}
答案 1 :(得分:2)
错误似乎在以下行 -
return new string(result);
因为result
的类型为string
,但new string..
采用了char数组。
但无论如何,当你返回字符串时,你可以直接返回result
string valuesNew = "To dO someThing in HomEWork";
char[] array = valuesNew.ToCharArray();
string result = array[0].ToString();
for (int i = 1; i < array.Length; i++)
{
if (array[i - 1] == ' ')
{
array[i] = char.ToUpper(array[i]);
result += array[i];
}
}
return result;
输出为TDSIH
答案 2 :(得分:1)
如果我查看问题,数组总是小于您需要返回的字符串。字符串基本上是一系列具有某些功能的字符......那么为什么不简单地修改所有内容并从char[]
创建一个?像StringBuilder
这样的工具也是一种选择,但它们需要分配,重新分配等 - 在这种情况下这是不必要的。
这是我想出的......不确定它是不是你的意思,但它确实类似于你的问题。
static void Main(string[] args)
{
char[] array = " This is a sentence.".ToCharArray();
int dst = 0;
if (array[0] != ' ' && char.IsLetter(array[0]))
{
array[dst++] = char.ToUpper(array[0]);
}
for (int i = 1; i < array.Length; i++)
{
if (array[i - 1] == ' ' && char.IsLetter(array[i]))
{
array[dst++] = char.ToUpper(array[i]);
}
}
string result = new string(array, 0, dst);
Console.WriteLine(result);
Console.ReadLine();
}
那么,为什么这种做法?
+=
向字符串添加字符意味着我们必须分配字符串,复制旧字符串,添加字符并丢弃旧字符串。这是在一周中的任何一天打破表现的简单方法。 StringBuilder
更好......但如果我们已经知道我们想要拥有什么,为什么要使用这样的东西。答案 3 :(得分:0)
如果我理解你的查询,你正在寻找这样的东西:
using System.Globalization;
...
...
...
public string CapitalizeEveryWordInMyString(string input)
{
return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input);
}
答案 4 :(得分:-1)
尝试以下代码。您可以接受参数作为输入
仍然不清楚你的要求,因为你说你想要第一个带空格的角色。
{{1}}