2010-10-07 334 views
105

可以通過執行以下操作來檢索字符串的第一個charC#:如何獲得一個字符串的第一個字符?

MyString.ToCharArray[0] 
+4

當你嘗試時你學到了什麼? – 2010-10-07 05:03:01

+1

@Michael:有一個編譯器錯誤。如果不是這種方式,你打算如何使用ToCharArray? – 2010-10-07 05:10:22

+3

對於記錄,'ToCharArray'是一個*方法*,你應該首先運行它,例如'char [] chars = str.ToCharArray();',然後使用'char first = chars [0];'。你也可以將它編譯成'str.ToCharArray()[0];'。無論哪種方式,請確保您檢查字符串不爲空,並且至少有一個字符 - 您可以使用if(!String.IsNullOrEmpty(str))'來完成。 – Kobi 2010-10-07 05:13:14

回答

247

只是MyString[0]。這使用索引器String.Chars

+0

因爲一個字符串是一個數組!!!!!!! Jeeeeez! – Hill 2017-10-03 22:37:54

37

Mystring[0]應該足夠

+33

不應該花費額外的五秒鐘打字,「應該足夠」。 – 2010-10-07 05:02:59

+0

誰先回答這個問題? – 2010-10-07 05:06:37

+0

選擇最舊的選項卡,將其視爲Matthew – johnc 2010-10-07 05:10:37

5

或者,你可以這樣做:

MyString[0]; 
+6

是的,我認爲答案已被覆蓋。 – 2010-10-07 05:04:28

+4

@Robert,naw,我想再看一遍,只是爲了確定! – jjnguy 2010-10-07 05:07:03

+1

我只是沒有看到我之前的那些:) – 2010-10-07 05:08:08

4

我認爲你正在尋找這個MyString.ToCharArray()[0]

:)

但是你可以使用MyString[0]了。

15

MyString[0]MyString.ToCharArray()[0]之間的區別在於前者將字符串視爲只讀數組,而ToCharArray()創建新數組。前者對於幾乎任何可以工作的地方都會更快(而且更容易),但如果您有一種方法需要接受數組,或者如果您想要更改數組,則可能需要ToCharArray

如果字符串不是已知非空非空,你可以這樣做:

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

返回null或字符串中的第一個字符的char?適當。

+0

感謝您提及'char?'作爲包含「沒有第一個字符」的可能性的一種方式。 – ToolmakerSteve 2017-04-08 18:55:58

11

您可以使用LINQ

char c = mystring.FirstOrDefault() 

這將等於'\0'如果字符串爲空。

6

只是另一種方法:

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

所陳述的答案並沒有爲我工作,出於某種原因。說我無法比較類型字符串的類型。所以我這樣做:

string allInts = new String(telePhone.Where(Char.IsDigit).ToArray()); 

if (allInts[0].ToString() == "1") 
{ 
    ...yada 
} 
+3

「出於某種原因」。如何「完美的工作,但你試圖比較一個字符串與一個字符」? 's [0] =='1''。單引號表示一個字符。雙引號是一個字符串。不要發佈關於您尚未開始學習的語言的「答案」。 – 2016-09-03 20:36:11

+0

我儘量不要「堆積」錯誤的答案,但是 - 就像埃德說的那樣。編譯器甚至告訴你你做錯了什麼。當你收到這條消息時,你是否在發佈之前谷歌錯誤消息?您是否花時間閱讀了關於C#中的字符和字符串? *搜索使用字符和字符串的示例* P.S .:你是否意識到,一旦有人指出它沒有用處,你就可以*刪除你的答案*。 – ToolmakerSteve 2017-04-08 18:21:17

6

試試這個,

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

+1

這個答案和選擇的答案之間的區別是這個解決方案返回一個字符串,而另一個返回一個字符。 – Louhike 2017-09-06 14:51:40

+0

char只能獲得一個字符,但如果需要,我的解決方案可能會導致多個結果。 – 2017-09-07 05:19:23

+0

這只是一種精確性,因爲根據你想要用它做什麼,類型可能是重要的。 – Louhike 2017-09-07 09:56:29

0

從字符串得到一個字符可能取決於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); 
+0

這是一個怎樣的答案? – Nilesh 2017-11-30 22:41:51