.NET / C # - แปลงถ่าน [] เป็นสตริง


407

วิธีที่เหมาะสมในการเปลี่ยนchar[]เป็นสตริงคืออะไร?

ToString()วิธีจากอาร์เรย์ของตัวอักษรไม่ได้ทำเคล็ดลับที่

คำตอบ:


677
char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'};
string s = new string(chars);

12
โปรดทราบว่าnew string(null)อัตราผลตอบแทนString.Emptyและไม่ null ! หากคุณต้องการเก็บไว้nullคุณสามารถสร้างวิธีการขยายstatic string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }ได้
Skod

8
@Skod: เห็นว่าเป็นไปไม่ได้สำหรับการแสดงออก "ใหม่" เพื่อส่งกลับค่าอื่นนอกเหนือจากอินสแตนซ์ของวัตถุที่ไม่ควรแปลกใจสำหรับทุกคน
Matti Virkkunen

@MattiVirkkunen: การยกเว้นก็เป็นสิ่งที่ควรทำ นั่นเป็นพฤติกรรมที่ฉันจะเดาได้ว่าผ่านโมฆะไปที่ตัวสร้างสตริง
ชาร์ลส์เทย์เลอร์

81

ใช้นวกรรมิกของสตริงที่ยอมรับตัวอักษร []

char[] c = ...;
string s = new string(c);

54
ถ้าเพียงคุณเร็วกว่าสามนาทีคุณจะต้องตอบก่อนที่คำถามจะถูกถาม!
DCastenholz

1
ลืมนาที มันแค่ 17 วินาที คำตอบของฉันด้านบนคือคำตอบที่ได้รับการโหวตในเว็บไซต์ อันที่จริงฉันมาที่นี่แล้วเพราะมีคนโหวตอีกครั้งเกือบ 10 ปีต่อมา และทั้งสองคำตอบนั้นไม่ได้แตกต่างกันมากนัก ... แต่ของฉันได้รับการโพสต์เร็วขึ้น 17 วินาทีและนั่นหมายถึงความแตกต่างในการโหวต 500: /
Joel Coehoorn


28

อีกทางหนึ่ง:

char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'};
string s = string.Join("", chars);
//we get "a string"
// or for fun:
string s = string.Join("_", chars);
//we get "a_ _s_t_r_i_n_g"

string.Joinยอมรับเฉพาะstring[]แทนchar[]
sky91

@ sky91 ไม่เพียง แต่คุณสามารถใช้ String.Join <T> วิธีการและพารามิเตอร์ T [] ใด ๆ จะถูกเรียกว่า T.ToString ()
Semen Miroshnichenko

1
คุณควรเขียนstring.Join<char>("_", chars)แทนstring.Join("_", chars)
sky91

2
คอมไพเลอร์ทำมันโดยอัตโนมัติตามประเภทตัวอักษรเป็นที่รู้จักกันในเวลารวบรวม
Semen Miroshnichenko

มันแปลกเพราะฉันได้รับข้อผิดพลาดในการคอมไพล์ถ้าฉันไม่ได้กำหนดประเภท <char>
sky91


15

ใช้ตัวสร้างสตริงที่ยอมรับ chararray เป็นอาร์กิวเมนต์เริ่มตำแหน่งและความยาวของอาร์เรย์ ไวยากรณ์ได้รับด้านล่าง:

string charToString = new string(CharArray, 0, CharArray.Count());

ฉันคิดว่านั่นคือสิ่งที่ฉันกำลังมองหา แต่ฉันไม่รู้ชั้นเรียนชื่อ CharArray คุณอาจหมายถึงบางอย่างเช่น:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000

CharArray ไม่ใช่คลาสเพียงตัวแปรประเภท char []
Dilip Nannaware

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.