C#中如何将输入字符串转换为大写

How to convert an input string to uppercase in c#

string choice = String.ToUpper(Console.ReadLine());

我想输入一个字符串并将其转换为大写。但是,有一个错误指出:

cannot convert from 'string' to System.Globalization.CultureInfo'

当我将鼠标悬停在 Console.ReadLine() 上时出现。为什么这不起作用,有什么修复方法?还有其他方法吗?

String.ToUpper 是一个实例方法,这意味着你必须使用它 "on" 你的字符串:

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??!

An object reference is required for the non-static field, method, or property 'string.ToUpper(CultureInfo)

仅当 static 时,才可以在没有类型实例的情况下使用方法。

这样不行。

string choice = Console.ReadLine().ToUpper();

ToUpper 方法属于字符串class。它采用 System.Globalization.CultureInfo.

类型的参数

你可以这样写:

字符串选择=Console.ReadLine().ToUpper();

也许你可以试试这个:

static void Main(string[] args)
{
    string input = Console.ReadLine();

    string choice = 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'... 此算法也适用。但要小心!这只适用于英文字母!然后我将 current(ASCII 值)减为 32。我将它转换回一个字符并将其添加到 string output。在 for 循环后

希望对您有所帮助。 :D