C #: Wie bekomme ich das erste Zeichen eines Strings?

177

Kann der erste chareiner Zeichenfolge wie folgt abgerufen werden?

MyString.ToCharArray[0]
Craig Johnston
quelle
4
Was hast du gelernt, als du es ausprobiert hast?
Michael Petrotta
1
@ Michael: Es gab einen Compilerfehler. Wie sollen Sie ToCharArray verwenden, wenn nicht auf diese Weise?
Craig Johnston
3
Wenn es sich bei dem Datensatz ToCharArrayum eine Methode handelt , sollten Sie sie zuerst ausführen, z. B. char[] chars = str.ToCharArray();verwenden char first = chars[0];. Sie können es auch schlachten str.ToCharArray()[0];. Stellen Sie in jedem Fall sicher, dass die Zeichenfolge nicht null ist und mindestens ein Zeichen enthält - Sie können dies mit verwenden if(!String.IsNullOrEmpty(str)).
Kobi
1
Craig .. die Verwendung von ToCharArray ist falsch. Siehe meine Antwort.
Nayan
4
Willst du den ersten charoder den ersten Charakter ? Wenn Sie dies versuchen und es zu funktionieren scheint, versuchen Sie es erneut mit 𣊾oder 𣇞, was beide in einem von mir verwendeten Programm fehlgeschlagen sind, das in C # mit genau diesem Fehler geschrieben wurde.
Hippietrail

Antworten:

56

Mystring[0] sollte genug sein

aqwert
quelle
50
Sollte man nicht diese zusätzlichen fünf Sekunden damit verbringen, die Wörter zu tippen, "sollte genug sein".
Robert Harvey
Wer hat diese Frage zuerst beantwortet?
Craig Johnston
Wählen Sie die älteste Registerkarte, um zu sehen, dass es als Matthew
Johnc
10
@ Johnc: Oder besser, schweben Sie über dem Zeitstempel.
Jeff Mercado
21

Versuche dies,

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

Sanjay Kumaar
quelle
6
Der Unterschied zwischen dieser und der ausgewählten Antwort besteht darin, dass diese Lösung eine Zeichenfolge und die andere ein Zeichen zurückgibt.
Loïc Lopes
char bekommt nur ein Zeichen, aber meine Lösung kann mehr als ein Ergebnis sein, wenn Sie wollen.
Sanjay Kumaar
1
Es war nur eine Präzision, da der Typ von Bedeutung sein kann, je nachdem, was Sie damit machen möchten.
Loïc Lopes
18

Der Unterschied zwischen MyString[0]und MyString.ToCharArray()[0]besteht darin, dass erstere die Zeichenfolge als schreibgeschütztes Array behandelt und gleichzeitig ToCharArray()ein neues Array erstellt. Ersteres wird schneller (zusammen mit einfacher) für fast alles sein, wo es funktionieren wird, aberToCharArray kann jedoch erforderlich sein, wenn Sie eine Methode haben, die ein Array akzeptieren muss, oder wenn Sie das Array ändern möchten.

Wenn nicht bekannt ist, dass die Zeichenfolge nicht null und nicht leer ist, können Sie Folgendes tun:

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

char?Dies gibt je nach Bedarf ein Nullzeichen oder das erste Zeichen in der Zeichenfolge zurück.

Jon Hanna
quelle
Vielen Dank für die Erwähnung char?als Möglichkeit, die Möglichkeit "Es gibt kein erstes Zeichen" aufzunehmen.
ToolmakerSteve
17

Sie können LINQ verwenden

char c = mystring.FirstOrDefault()

Es ist gleich, '\0'wenn die Zeichenfolge leer ist.

Dmitry S.
quelle
8

Oder Sie können dies tun:

MyString[0];
James Bond
quelle
6
@ Robert, nein, ich möchte es noch einmal sehen, nur um sicher zu sein!
jjnguy
1
Ich habe die vor mir einfach nicht gesehen :)
james_bond
1
Keine Bange. Ich mache es auch die ganze Zeit. Ich bin ein sehr langsamer Typ.
jjnguy
8

Nur ein weiterer Ansatz:

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

Ich denke du suchst das MyString.ToCharArray()[0]

:) :)

Aber Sie können auch verwenden MyString[0].

Nayan
quelle
0

MyString.Remove (1, 2); funktioniert auch

Clint Gaydon
quelle
0

Das folgende Beispiel zum Abrufen des ersten Zeichens aus einer Zeichenfolge kann jemandem helfen

string anyNameForString = "" + stringVariableName[0];
Ibrahim Iqbal
quelle
0

Die Antwort auf Ihre Frage lautet NEIN.

Richtig ist MyString [Position des Zeichens]. In Ihrem Fall MyString [0] ist 0 das ERSTE Zeichen einer Zeichenfolge.

Ein Zeichenwert wird mit '(einfaches Anführungszeichen) bezeichnet, so wie dieser x-Zeichenwert als' x 'geschrieben wird.

Ein Zeichenfolgenwert wird mit "(doppeltes Anführungszeichen) bezeichnet, so wie dieser x-Zeichenfolgenwert als" x "geschrieben wird.

Die Methode Substring () gibt also auch kein Zeichen zurück, die Methode Substring () gibt einen String zurück !!!

Eine Zeichenfolge ist ein Array von Zeichen, und das letzte Zeichen muss das Zeichen '\ 0' (null) sein. Das ist der Unterschied zwischen Zeichenarray und Zeichenfolge (dies ist ein Array von Zeichen mit dem letzten Zeichen als "Ende der Zeichenfolgenmarkierung" '\ 0' null.

Beachten Sie auch, dass 'x' NICHT gleich "x" ist. Weil "x" eigentlich 'x' + '\ 0' ist.

Biddut Mitra
quelle
0

In C # 8 können Sie Bereiche verwenden.

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

Fügen Sie ein ?After hinzu myString, um nullZeichenfolgen zu verarbeiten .

Dmitry S.
quelle
-2

Das Abrufen eines Zeichens aus einer Zeichenfolge kann von der Folge abhängen (die Zeichenfolge ist standardmäßig 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);
user2849180
quelle
2
Wie ist das eine Antwort?
Nilesh