C #: как получить первый символ строки?


177

Можно ли получить первую charстроку, выполнив следующее?

MyString.ToCharArray[0]

4
Что вы узнали, когда попробовали это?
— Майкл Петротта

1
@Michael: Произошла ошибка компилятора. Как вы собираетесь использовать ToCharArray, если не так?
— Крейг Джонстон

3
Для записи, ToCharArrayэто метод , вы должны сначала запустить его, например char[] chars = str.ToCharArray();, а затем использовать char first = chars[0];. Вы также можете вырезать это в str.ToCharArray()[0];. В любом случае, убедитесь, что вы проверили, что строка не равна нулю и имеет хотя бы один символ - вы можете сделать это, используя if(!String.IsNullOrEmpty(str)).
— Коби

1
Крейг .. использование ToCharArray неправильно. Смотри мой ответ.
— Наян

4
Хотите первый charили первый персонаж ? Если вы попробуете это, и, похоже, это сработает, попробуйте еще раз с 𣊾или 𣇞, что оба не удалось в программе, которую я использовал, которая была написана на C # с этой конкретной ошибкой.
— hippietrail

Ответы:



56

Mystring[0] должно быть достаточно


51
Не стоит ли потратить эти лишние пять секунд, набрав слова «должно быть достаточно».
— Роберт Харви

Кто первым ответил на этот вопрос?
— Крейг Джонстон

Выберите самую старую вкладку, чтобы увидеть, что это как Мэтью
— Джон

10
@johnc: или лучше, наведите курсор на отметку времени.
— Джефф Меркадо

22

Попробуй это,

string s1="good"; string s=s1.Substring(0,1);


6
Разница между этим ответом и выбранным в том, что это решение возвращает строку, а другой возвращает символ.
— Лоик Лопес

char получает только один символ, но мое решение может привести к нескольким, если хотите.
— Санджай Кумаар

1
Это была просто точность, так как тип может иметь значение в зависимости от того, что вы хотите с ним делать.
— Лоик Лопес

18

Разница между MyString[0]и MyString.ToCharArray()[0]заключается в том, что первый обрабатывает строку как массив только для чтения, а ToCharArray()создает новый массив. Первый будет быстрее (и легче) почти для всего, где он будет работать, но ToCharArrayможет понадобиться, если у вас есть метод, который должен принять массив, или если вы хотите изменить массив.

Если неизвестно, что строка ненулевая и не пустая, вы можете сделать следующее:

string.IsNullOrEmpty(MyString) ? (char?)null : MyString[0]

который возвращает char?либо ноль, либо первый символ в строке, в зависимости от ситуации.


Спасибо за упоминание char?как способ включить возможность "нет первого символа".
— ToolmakerSteve


8

Или вы можете сделать это:

MyString[0];

6
@ Роберт, нет, я хочу увидеть это еще раз, просто чтобы быть уверенным!
— Jjnguy

1
Я просто не видел те, что раньше моего :)
— james_bond

1
не беспокойся. Я делаю это все время тоже. Я очень медленный типер.
— Jjnguy


5

Я думаю, что вы ищете это MyString.ToCharArray()[0]

:)

Но вы MyString[0]тоже можете использовать .


1

Следующий пример получения первого символа из строки может помочь кому-то

string anyNameForString = "" + stringVariableName[0];


0

Ответ на ваш вопрос НЕТ.

Правильным является MyString [позиция персонажа]. В вашем случае MyString [0], 0 является ПЕРВЫМ символом любой строки.

Символьное значение обозначается как «(одинарная кавычка), как это символьное значение x записывается как« x ».

Строковое значение обозначается "(двойная кавычка), как это значение x строки записывается как" x ".

Поэтому метод Substring () также не возвращает символ, метод Substring () возвращает строку !!!

Строка - это массив символов, и последний символ должен быть символом '\ 0' (нулевым). Это разница между массивом символов и строкой (который представляет собой массив символов с последним символом как «маркер конца строки» '\ 0', равным нулю).

А также обратите внимание, что «х» не равно «х». Потому что «х» на самом деле «х» + «\ 0».



-2

получение символа из строки может зависеть от конца (строка по умолчанию - UTF-16)

https://stackoverflow.com/a/32141891

string str = new String(new char[] { '\uD800', '\uDC00', 'z' });
string first = str.Substring(0, char.IsHighSurrogate(str[0]) ? 2 : 1);

2
Как это ответ?
— Нилеш
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.