C#:文字列の最初の文字を取得する方法?


177

char次のようにして、文字列の最初を取得できますか?

MyString.ToCharArray[0]

4
やってみて何を学びましたか?
Michael Petrotta

1
@Michael:コンパイラエラーが発生しました。この方法でない場合、ToCharArrayをどのように使用する予定ですか?
クレイグジョンストン

3
レコードの場合、ToCharArrayメソッドです。最初に実行する必要がchar[] chars = str.ToCharArray();ありますchar first = chars[0];。たとえば、次にを使用します。また、それを肉屋にすることもできstr.ToCharArray()[0];ます。どちらの方法でも、文字列がnullでなく、1文字以上あることを確認してください-を使用して確認できますif(!String.IsNullOrEmpty(str))
Kobi

1
Craig .. ToCharArrayの使い方が間違っています。私の答えを見てください。
Nayan

4
char最初の文字または最初の文字が欲しいですか?これを試してもうまくいくようであれば、𣊾または𣇞で再試行してください。どちらも、C#で記述されたこの正確なバグで記述された、私が使用していたプログラムで失敗しました。
ヒッピートレイル2015

回答:



56

Mystring[0] 十分なはずです


51
「十分であるはずです」という単語を入力するために余分な5秒間を費やすべきではありません。
Robert Harvey、

誰が最初にこの質問に答えましたか?
Craig Johnston、

最も古いタブを選択して、それがMatthewであることを確認します
johnc

10
@johnc:それ以上に、タイムスタンプにカーソルを合わせます。
ジェフメルカド

21

これを試して、

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


6
この回答と選択した回答の違いは、このソリューションは文字列を返し、もう一方は文字を返すということです。
ロイック・ロペス

charは1文字しか取得しませんが、私の解決策は、必要に応じて複数になる可能性があります。
Sanjay Kumaar 2017

1
型は、何をしたいかによって重要になる可能性があるため、これは単なる精度でした。
ロイック・ロペス

18

MyString[0]とはMyString.ToCharArray()[0]しながら、読み取り専用アレイとしてその前者扱い文字列であるToCharArray()新しい配列を作成します。前者は、動作するほとんどすべての場所で(より簡単に)速くなりToCharArrayますが、配列を受け入れる必要があるメソッドがある場合、または配列を変更する場合に必要になることがあります。

文字列がnullでも空でもないとわかっている場合は、次のようにします。

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

char?必要に応じて、nullまたは文字列の最初の文字のいずれかを返します。


char?「最初の文字がない」可能性を含める方法として言及していただきありがとうございます。
ToolmakerSteve 2017

17

LINQを使用できます

char c = mystring.FirstOrDefault()

'\0'文字列が空の場合と同じになります。


8

またはこれを行うことができます:

MyString[0];

6
@ロバート、いや、念のためもう一回見たい!
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」がnullである文字の配列です)の違いです。

また、「x」は「x」と等しくないことに注意してください。「x」は実際には「x」+「\ 0」だからです。


0

C#8では範囲を使用できます。

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

文字列を処理するために?after myStringを追加しnullます。


-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
これはどのように答えますか?
Nilesh 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.