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.