C # : 문자열의 첫 번째 문자를 얻는 방법?


177

char다음을 수행하여 문자열 의 첫 번째 를 검색 할 수 있습니까 ?

MyString.ToCharArray[0]

4
시도했을 때 무엇을 배웠습니까?
Michael Petrotta

1
@Michael : 컴파일러 오류가 발생했습니다. 이 방법이 아닌 경우 ToCharArray를 어떻게 사용 하시겠습니까?
Craig Johnston

3
레코드의 ToCharArray경우 메소드 입니다. 예를 들어 먼저 실행 char[] chars = str.ToCharArray();한 다음을 사용해야 char first = chars[0];합니다. 당신은 또한 그것을 도살 할 수 있습니다 str.ToCharArray()[0];. 어느 쪽이든 문자열이 null이 아니고 하나 이상의 문자가 있는지 확인하십시오 if(!String.IsNullOrEmpty(str)).를 사용하여 수행 할 수 있습니다 .
Kobi

1
Craig .. ToCharArray의 사용법이 잘못되었습니다. 내 대답을 참조하십시오.
Nayan

4
첫 번째 char또는 첫 번째 문자를 원 하십니까? 당신이 시도하고 그것이 작동하는 것 같다 경우, 다시 시도 𣊾또는 𣇞모두가이 정확한 버그로 C #으로 작성되었습니다 내가 사용 된 프로그램에 실패한.
hippietrail

답변:



56

Mystring[0] 충분해야한다


51
'충분히 충분하다'는 단어를 입력하는 데 5 초를 더 소비해서는 안됩니다.
Robert Harvey

누가이 질문에 먼저 대답 했습니까?
Craig Johnston

가장 오래된 탭을 선택하여 Matthew로 확인하십시오.
johnc

10
@ johnc : 또는 타임 스탬프 위에 마우스를 올리십시오.
Jeff Mercado

21

이 시도,

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


6
이 답변과 선택한 답변의 차이점은이 솔루션은 문자열을 반환하고 다른 솔루션은 문자를 반환한다는 것입니다.
Loïc Lopes

char 하나의 문자 만 얻지 만 원하는 경우 내 솔루션이 둘 이상의 결과가 될 수 있습니다.
Sanjay Kumaar

1
당신이하고 싶은 것에 따라 유형이 중요 할 수 있기 때문에 정밀도입니다.
Loïc Lopes

18

차이 MyString[0]MyString.ToCharArray()[0]동시에 판독 전용 배열과 그 이전의 취급 문자열 인 ToCharArray()새로운 배열을 생성한다. 전자는 그것이 작동하는 거의 모든 곳에서 더 빠르지 만 (쉽게도) ToCharArray배열을 수용 해야하는 메소드가 있거나 배열을 변경하려는 경우 필요할 수 있습니다.

문자열이 null이 아니거나 비어 있지 않은 것으로 알려진 경우 다음을 수행 할 수 있습니다.

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

char?문자열의 적절한 경우 null 또는 첫 번째 문자 중 하나 를 반환합니다 .


char?"첫 번째 문자가 없습니다"라는 가능성을 포함시키는 방법으로 언급 해 주셔서 감사합니다 .
ToolmakerSteve

17

LINQ를 사용할 수 있습니다

char c = mystring.FirstOrDefault()

이 같아야합니다 '\0'문자열이 비어있는 경우.


8

또는 당신은 이것을 할 수 있습니다 :

MyString[0];

6
@Robert, naw, 한 번 더보고 싶을뿐입니다.
jjnguy

1
난 그냥 :) 내 앞에 사람을 보지 못했다
james_bond

1
걱정 마. 나는 항상 그것을한다. 나는 정말 느린 타입입니다.
jjnguy

8

또 다른 접근법 :

string mystr = "hello";
MessageBox.show(mystr.Substring(0, 1));

5

나는 당신이 이것을 찾고 있다고 생각합니다 MyString.ToCharArray()[0]

:)

그러나 당신도 사용할 수 있습니다 MyString[0].



0

문자열에서 첫 번째 문자를 얻는 예제는 누군가에게 도움이 될 수 있습니다.

string anyNameForString = "" + stringVariableName[0];

0

귀하의 질문에 대한 답변은 아니오입니다.

MyString [문자 위치]가 올바른지 확인하십시오. 귀하의 경우 MyString [0]에서 0은 모든 문자열의 첫 번째 문자입니다.

문자 값은 '(작은 따옴표)로 지정되며이 x 문자 값은'x '로 작성됩니다.

이 x 문자열 값이 "x"로 작성된 것처럼 문자열 값은 "(큰 따옴표)로 지정됩니다.

따라서 Substring () 메서드는 문자를 반환하지 않으며 Substring () 메서드는 문자열을 반환합니다 !!!

문자열은 문자 배열이며 마지막 문자는 '\ 0'(널) 문자 여야합니다. 그것은 문자 배열과 문자열의 차이입니다 (마지막 문자가 "문자열 끝" "\ 0"인 문자 배열입니다).

또한 'x'는 "x"와 같지 않습니다. "x"는 실제로 'x'+ '\ 0'이므로


0

C # 8에서는 범위를 사용할 수 있습니다.

myString[0..Math.Min(myString.Length, 1)]

문자열 을 처리하기 위해 ?after myString를 추가하십시오 null.


-2

문자열에서 문자를 얻는 것은 enconding에 따라 다를 수 있습니다 (문자열 기본값은 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
이것이 어떻게 대답입니까?
Nilesh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.