ฉันต้องการแปลงอาเรย์สตริงเป็นสตริงเดียว
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
ฉันอยากได้อะไรบางอย่างเช่น "Hello World!"
ฉันต้องการแปลงอาเรย์สตริงเป็นสตริงเดียว
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
ฉันอยากได้อะไรบางอย่างเช่น "Hello World!"
คำตอบ:
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string.Join("", test);
var separator = ", ";
string.Join(separator , test);
string.Join(string.Empty, test)
empty-paranthesis
เล็กน้อยเร็วขึ้นตัวเลือกกว่าการใช้การใช้งานดังกล่าวแล้วของJoin()
วิธีการเป็นConcat ()วิธีการ มันไม่จำเป็นต้องมีพารามิเตอร์ตัวคั่นว่างเปล่าเป็นJoin()
ไม่ ตัวอย่าง:
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = String.Concat(test);
ดังนั้นจึงน่าจะเร็วกว่า
Concat
ดีกว่าในรหัสภายในของJoin
มันจะผนวกตัวคั่นหลังจากแต่ละรายการ แต่Concat
ไม่มีรหัสดังกล่าวมันง่ายกว่าและตรงกว่าJoin
มาก นี่คือคำตอบที่ fittst
ลอง:
String.Join("", test);
ซึ่งควรส่งคืนสตริงที่รวมองค์ประกอบทั้งสองเข้าด้วยกัน ""
ระบุว่าคุณต้องการให้สตริงเข้าด้วยกันโดยไม่มีตัวคั่นใด ๆ
"Hello "
ในคำถามนั้นมีช่องว่างต่อท้าย หากพื้นที่ไม่ได้อยู่ที่นั่นแล้วคุณจะถูกต้องและใช้" "
เป็นตัวคั่นจะทำให้รู้สึกมากขึ้น
สตริงที่เรียบง่าย Concat () คือสิ่งที่คุณต้องการ
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string result = string.Concat(test);
หากคุณต้องการเพิ่มตัวคั่น (ช่องว่างเครื่องหมายจุลภาค ฯลฯ ) ดังนั้นควรใช้ string.Join ()
string[] test = new string[2];
test[0] = "Red";
test[1] = "Blue";
string result = string.Join(",", test);
หากคุณต้องดำเนินการนี้ในอาร์เรย์สตริงที่มีองค์ประกอบของนักล่ากว่า string.Join () จะดีกว่าโดยมุมมอง performace เพียงให้อาร์กิวเมนต์ "" (ว่าง) เป็นตัวคั่น StringBuilder ยังสามารถใช้เพื่อประสิทธิภาพการทำงาน แต่มันจะทำให้รหัสอีกต่อไป
Concat
และJoin
เร็วกว่าStringBuilder
ถ้าคุณมี 4 หรือน้อยกว่าสตริงที่จะต่อกัน
Aggregate
ยังสามารถใช้สำหรับเดียวกัน
string[] test = new string[2];
test[0] = "Hello ";
test[1] = "World!";
string joinedString = test.Aggregate((prev, current) => prev + " " + current);
String.Join
เนื่องจากมีการสร้างสตริงเพิ่มเติมหลายรายการ โปรดอ่านstackoverflow.com/questions/217805/...Aggregate
สำหรับตัวแปรที่เหมาะสมของ
string ConvertStringArrayToString(string[] array)
{
//
// Concatenate all the elements into a StringBuilder.
//
StringBuilder strinbuilder = new StringBuilder();
foreach (string value in array)
{
strinbuilder.Append(value);
strinbuilder.Append(' ');
}
return strinbuilder.ToString();
}
string.Join(" ", array)
(ยกเว้นพื้นที่ของคุณเพิ่มพื้นที่ต่อท้าย) ทำไมไม่ใช้เพียงอันเดียวในห้องสมุด?
ฉันใช้วิธีนี้เพื่อทำให้โครงการเร็วขึ้น:
RichTextBox rcbCatalyst = new RichTextBox()
{
Lines = arrayString
};
string text = rcbCatalyst.Text;
rcbCatalyst.Dispose();
return text;
RichTextBox.Text จะแปลงอาร์เรย์ของคุณเป็นสตริงหลายบรรทัดโดยอัตโนมัติ!
ในคำตอบที่ยอมรับ String.Join ไม่ใช่วิธีปฏิบัติที่ดีที่สุดต่อการใช้งาน ควรใช้ String.Concat เนื่องจาก OP ได้รวมช่องว่างต่อท้ายในรายการแรก: "Hello" (แทนที่จะใช้ตัวคั่น null)
อย่างไรก็ตามเนื่องจาก OP ขอผลลัพธ์ "Hello World!" String.Join ยังคงเป็นวิธีการที่เหมาะสม แต่ควรย้ายช่องว่างต่อท้ายไปที่ตัวคั่นแทน
// string[] test = new string[2];
// test[0] = "Hello ";
// test[1] = "World!";
string[] test = { "Hello", "World" }; // Alternative array creation syntax
string result = String.Join(" ", test);
แบบนี้:
string str= test[0]+test[1];
คุณยังสามารถใช้ลูป:
for(int i=0; i<2; i++)
str += test[i];