Подтвердить что ты не робот

Почему ToUpper() не возвращает "*" при применении к "8"?

string s = "h";
s = s.ToUpper();

возвращает "H".

string s = "8";
s = s.ToUpper();

возвращает "8"

Если это не возвращает "*"?

4b9b3361

Ответ 1

Нет, не следует. ToUpper() не означает WithShiftKeyOnAnInternationalASCIIKeyboard(). Существует не прописная буква 8, поскольку 8 - это число, а не буква.

Конечно, это грубое чрезмерное упрощение (если только номер не позволяет автоматически сделать определенный символ в наборе символов безлицензионным), но это, вероятно, то, о чем вы просите, так что я оставлю его на что.

Ответ 2

Поскольку нет верхнего регистра 8.

Просто потому, что используемая вами клавиатура имеет * на том же ключе, что и 8, не означает, что все клавиатуры работают. На некоторых языках нет буквы в верхнем регистре - что должно ToUpper вернуть для них?

String.ToUpper():

Этот метод использует правила оболочки текущей культуры для преобразования каждого символа в текущем экземпляре в его верхний регистр. Если символ не имеет эквивалента в верхнем регистре, он включается в неизмененную строку.

Ответ 3

Реальный ответ заключается в том, что TextInfo, связанный с CultureInfo для en-US, не определяет "*" как верхний регистр "8".

Возможно, возможно расширить этот текст, переопределить toUpper() и заставить его работать так, как вы пожелаете.

Ответ 4

  • Номера не имеют верхних букв.
  • если вы используете функцию ToUpper() для следующего текста: "есть 8 зданий"
    Какой результат вы хотели бы иметь? "НАХОДИТСЯ 8 ЗДАНИЙ" или "НАХОДИТСЯ * ЗДАНИЯ"
  • Keyboardlayout локализуется, например. на немецких клавиатурах есть ( на клавише 8

Ответ 5

Просто потому, что вы нажимаете shift 8, чтобы получить *, не делает его заглавным, оно применяется только для символов a-z.