如何使用C#将字符串转换为PascalCase字符串
本文关键字:字符串 转换 PascalCase 何使用 | 更新日期: 2023-09-27 18:20:08
我的代码有问题。我不知道我做错了什么。我想让用户写一些句子,然后程序应该把写下的句子拆分成单个单词,在数组中每个单词的第一个字符上使用ToUpper,然后在没有空格的情况下再次将它们连接在一起。
我的代码是:
static void Skrci(string stavek)
{
string[] p;
p = stavek.Split(' '); // polje separatov
for (int i = 0; i < p.Length; i++)
{
if (p[i].Length > 0)
{
char zacetnica = Char.ToUpper(p[i][0]);
p[i] = p[i].Remove(0, 1);
p[i] = p[i].Insert(0, zacetnica.ToString());
}
}
stavek = string.Join(" ", p);
}
static void Main(string[] args)
{
string[] p = null;
Console.Write("Vpiši nek stavek: ");
string stavek = Console.ReadLine();
Skrci(stavek);
Console.WriteLine(stavek);
Console.ReadKey(true);
}
我试着走进来看看我是否能看到哪里出了问题,但我不知道。
您的问题是函数Skrci
没有返回值(或者,更新它的参数(通过引用))
这是一个快速修复
static string Skrci(string stavek)
{
string[] p;
p = stavek.Split(' '); // polje separatov
for (int i = 0; i < p.Length; i++)
{
if (p[i].Length > 0)
{
char zacetnica = Char.ToUpper(p[i][0]);
p[i] = p[i].Remove(0, 1);
p[i] = p[i].Insert(0, zacetnica.ToString());
}
}
return string.Join(" ", p);
}
static void Main(string[] args)
{
string[] p = null;
Console.Write("Vpiši nek stavek: ");
string stavek = Console.ReadLine();
stavek = Skrci(stavek);
Console.WriteLine(stavek);
Console.ReadKey(true);
}
将字符串转换为Camel Case的一种简单方法是自己创建以下扩展方法:
public static String ToCamelCase(this String source)
{
return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(source.ToLower());
}
(记入https://stackoverflow.com/a/1168346/310001)
然后你可以简单地这样做:
string stavek = Console.ReadLine().ToCamelCase();
编辑:
如果你想去掉单词之间的空格,当然可以在末尾添加.Replace(" ", "")
。
您应该将字符串传递给函数作为引用,而不是作为值。为此使用ref
关键字。
示例:
static void Skrci(ref string stavek)
{
string[] p;
p = stavek.Split(' '); // polje separatov
for (int i = 0; i < p.Length; i++)
{
if (p[i].Length > 0)
{
char zacetnica = Char.ToUpper(p[i][0]);
p[i] = p[i].Remove(0, 1);
p[i] = p[i].Insert(0, zacetnica.ToString());
}
}
stavek = string.Join(" ", p);
}
static void Main(string[] args)
{
string[] p = null;
Console.Write("Vpiši nek stavek: ");
string stavek = Console.ReadLine();
Skrci(ref stavek);
Console.WriteLine(stavek);
Console.ReadKey(true);
}
如果我理解得对,这就是你想要做的:
static string Skrci(string stavek)
{
string[] p;
p = stavek.Split(' '); // polje separatov
for (int i = 0; i < p.Length; i++)
{
if (p[i].Length > 0)
{
char zacetnica = Char.ToUpper(p[i][0]);
p[i] = p[i].Remove(0, 1);
p[i] = p[i].Insert(0, zacetnica.ToString());
}
}
stavek = string.Join(String.Empty, p);
return stavek;
}
static void Main(string[] args)
{
string[] p = null;
Console.Write("Vpiši nek stavek: ");
string stavek = Console.ReadLine();
stavek = Skrci(stavek);
Console.WriteLine(stavek);
Console.ReadKey(true);
}
如果您想连接没有空格的字符串,那么不要使用字符串。使用"作为分隔符连接。此外,您并没有打印该方法的结果,只是打印您的输入字符串。
static string Skrci(string stavek)
{
string[] p;
p = stavek.Split(' '); // polje separatov
for (int i = 0; i < p.Length; i++)
{
if (p[i].Length > 0)
{
char zacetnica = Char.ToUpper(p[i][0]);
p[i] = p[i].Remove(0, 1);
p[i] = p[i].Insert(0, zacetnica.ToString());
}
}
stavek = string.Join("", p);
return stavek;
}
static void Main(string[] args)
{
string[] p = null;
Console.Write("Vpiši nek stavek: ");
string stavek = Console.ReadLine();
stavek = Skrci(stavek);
Console.WriteLine(stavek);
Console.ReadKey(true);
}