string choice = String.ToUpper(Console.ReadLine());
我想输入一个字符串并将其转换为大写字母。但是,有一个错误表明:
当我将鼠标悬停在无法转换为' string'到System.Globalization.CultureInfo'
Console.ReadLine()
上时显示。为什么这不起作用,有什么修正?还有另一种方法吗?
答案 0 :(得分:3)
String.ToUpper
是一个实例方法,这意味着你必须在你的字符串上“使用它”:
string input = Console.ReadLine();
string choice = input.ToUpper();
否则您使用the overload来获取CultureInfo
个对象。由于String
无法转换为System.Globalization.CultureInfo
,因此会出现编译错误。但它无论如何都会产生误导,你不能在没有实例的情况下使用实例方法,因此会产生另一个错误:
String.ToUpper(CultureInfo.CurrentCulture); // what string you want upper-case??!
非静态字段,方法或者需要对象引用 property'tring.ToUpper(CultureInfo)
只有在static
的情况下才能使用没有类型实例的方法。
答案 1 :(得分:0)
它不会这样。
string choice = Console.ReadLine().ToUpper();
ToUpper方法属于String类。它采用System.Globalization.CultureInfo类型的参数。
答案 2 :(得分:0)
你可以写:
string choice = Console.ReadLine()。ToUpper();
答案 3 :(得分:0)
也许你可以试试这个:
static void Main(string[] args)
{
string input = Console.ReadLine();
Console.WriteLine(Capitalize(input);
Console.ReadKey();
}
string Capitalize(string word)
{
int current = 0;
string output = "";
for(int i = 0; i < word.Length, i++)
{
current -= (int)word[i];
current -= 32;
output += (char)current;
}
return output;
}
我的所作所为:
我从用户那里得到了一个输入。我们假设它是一个小写字。我将其中的每个字符转换为int(我得到ASCII代码)并将其放入int current
。例如'a'= 97(ASCII码),'A'是65.所以'A'小于'a',ASCII码为32。对于'b'和'c'......这个算法也有效。但要小心!这仅适用于英文字母!然后我用32减去current
(ASCII值)。我将它转换回一个字符并将其添加到string output
。在for
循环
我希望它有所帮助。 :d