คำถามติดแท็ก stringbuilder

Stringbuilder เป็นคลาสที่ให้วิธีการทำงานกับข้อมูลข้อความใน Java และ. NET framework ที่สะดวกและมีประสิทธิภาพ


18
StringBuilder เทียบกับการรวมสตริงเข้าใน toString () ใน Java
รับ 2 toString()การใช้งานด้านล่างซึ่งเป็นที่ต้องการ: public String toString(){ return "{a:"+ a + ", b:" + b + ", c: " + c +"}"; } หรือ public String toString(){ StringBuilder sb = new StringBuilder(100); return sb.append("{a:").append(a) .append(", b:").append(b) .append(", c:").append(c) .append("}") .toString(); } ? ที่สำคัญกว่านั้นเนื่องจากเรามีเพียง 3 คุณสมบัติเท่านั้นมันอาจไม่สร้างความแตกต่าง แต่ ณ จุดใดที่คุณจะเปลี่ยนจาก+concat เป็น StringBuilder?

17
ลบอักขระสุดท้ายของ StringBuilder หรือไม่
เมื่อคุณต้องวนซ้ำการรวบรวมและสร้างสตริงของข้อมูลแต่ละตัวคั่นด้วยตัวคั่นคุณจะต้องจบด้วยตัวคั่นพิเศษที่ส่วนท้ายเช่น for (String serverId : serverIds) { sb.append(serverId); sb.append(","); } ให้สิ่งที่ต้องการ: serverId_1, serverId_2, serverId_3, ฉันต้องการลบอักขระตัวสุดท้ายใน StringBuilder (โดยไม่ต้องแปลงเพราะฉันยังต้องการหลังจากลูปนี้)

9
วิธีผนวกบรรทัดใหม่ให้กับ StringBuilder
ฉันมีStringBuilderวัตถุ StringBuilder result = new StringBuilder(); result.append(someChar); ตอนนี้ผมต้องการที่จะผนวกอักขระ newline StringBuilderไป ฉันจะทำมันได้อย่างไร result.append("/n"); ไม่ทำงาน, ไม่เป็นผล. ดังนั้นฉันจึงคิดที่จะเขียนบรรทัดใหม่โดยใช้ Unicode จะช่วยได้ไหม ถ้าเป็นเช่นนั้นฉันจะเพิ่มได้อย่างไร



12
เป็น String.Format ที่มีประสิทธิภาพเท่ากับ StringBuilder
สมมติว่าฉันมีตัวสร้างสตริงใน C # ที่ทำสิ่งนี้: StringBuilder sb = new StringBuilder(); string cat = "cat"; sb.Append("the ").Append(cat).(" in the hat"); string s = sb.ToString(); จะเป็นอย่างมีประสิทธิภาพหรือมีประสิทธิภาพมากขึ้นเช่นเดียวกับที่มี: string cat = "cat"; string s = String.Format("The {0} in the hat", cat); ถ้าเป็นเช่นนั้นทำไม แก้ไข หลังจากคำตอบที่น่าสนใจฉันรู้ว่าฉันน่าจะชัดเจนขึ้นเล็กน้อยในสิ่งที่ฉันขอ ฉันไม่ได้มากขอซึ่งเป็นเร็วที่เชื่อมโยงสตริง แต่ที่เร็วที่ฉีดหนึ่งสายเข้าไปอีก ในทั้งสองกรณีข้างต้นฉันต้องการแทรกหนึ่งสตริงขึ้นไปในกึ่งกลางของสตริงแม่แบบที่กำหนดไว้ล่วงหน้า ขอโทษสำหรับความสับสน

12
C # หรือ Java: เพิ่มสตริงด้วย StringBuilder?
ฉันรู้ว่าเราสามารถต่อท้ายสตริงโดยใช้StringBuilder. มีวิธีที่เราสามารถเพิ่มสตริงไว้ข้างหน้าสตริงได้หรือไม่โดยใช้StringBuilderเพื่อให้เราสามารถรักษาผลประโยชน์ด้านประสิทธิภาพที่StringBuilderมีให้ได้หรือไม่?
104 c#  java  stringbuilder 

14
การนำ StringBuilder มาใช้ซ้ำจะดีกว่าไหม
ฉันมีคำถามเกี่ยวกับประสิทธิภาพการใช้งาน StringBuilder ในลูปที่ยาวมากฉันกำลังจัดการ a StringBuilderและส่งต่อไปยังวิธีอื่นเช่นนี้: for (loop condition) { StringBuilder sb = new StringBuilder(); sb.append("some string"); . . . sb.append(anotherString); . . . passToMethod(sb.toString()); } การสร้างอินสแตนซ์StringBuilderในทุก ๆ วงจรเป็นทางออกที่ดีหรือไม่? และเรียกการลบแทนดีกว่าดังต่อไปนี้หรือไม่? StringBuilder sb = new StringBuilder(); for (loop condition) { sb.delete(0, sb.length); sb.append("some string"); . . . sb.append(anotherString); . . . passToMethod(sb.toString()); …


12
วิธีที่ดีที่สุดในการลบอักขระสุดท้ายออกจากสตริงที่สร้างด้วย stringbuilder
ฉันมีดังต่อไปนี้ data.AppendFormat("{0},",dataToAppend); ปัญหาของเรื่องนี้คือฉันใช้มันวนซ้ำและจะมีลูกน้ำทดลอง วิธีที่ดีที่สุดในการลบเครื่องหมายจุลภาคต่อท้ายคืออะไร? ฉันต้องเปลี่ยนข้อมูลเป็นสตริงที่สตริงย่อยหรือไม่
92 c#  stringbuilder 


6
วิธีที่ถูกต้องในการใช้ StringBuilder ใน SQL
ฉันเพิ่งพบแบบสอบถาม sql บางตัวสร้างแบบนี้ในโครงการของฉัน: return (new StringBuilder("select id1, " + " id2 " + " from " + " table")).toString(); นี้ไม่StringBuilderบรรลุเป้าหมายของมันคือการลดการใช้หน่วยความจำ? ฉันสงสัยว่าเพราะในคอนสตรัคเตอร์จะใช้ '+' (ตัวดำเนินการ String concat) จะใช้หน่วยความจำเท่ากันกับการใช้ String เหมือนโค้ดด้านล่างหรือไม่? s StringBuilder.append()ผมเข้าใจมันแตกต่างเมื่อใช้ return "select id1, " + " id2 " + " from " + " table"; ทั้งสองงบเท่ากันในการใช้หน่วยความจำหรือไม่? กรุณาชี้แจง. ขอบคุณล่วงหน้า! แก้ไข: BTW, …

9
แนวทางปฏิบัติ / ประสิทธิภาพที่ดีที่สุด: การผสม StringBuilder.append กับ String.concat
ฉันพยายามทำความเข้าใจว่าแนวทางปฏิบัติที่ดีที่สุดคืออะไรและเหตุใดจึงต้องเชื่อมต่อตัวอักษรสตริงและตัวแปรสำหรับกรณีต่างๆ ตัวอย่างเช่นถ้าฉันมีรหัสเช่นนี้ StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String).append("CCCCCCCCCCC").append(D_String) .append("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .append("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); นี่คือวิธีการทำหรือไม่? จากการโพสต์นี้ผมสังเกตเห็นว่า+ผู้ประกอบการในสายสร้างตัวอย่างใหม่ของ StringBuilder เชื่อมเข้าด้วยกันตัวถูกดำเนินการและส่งกลับแปลง String ซึ่งดูเหมือนว่าการทำงานมากขึ้นกว่าเพียงแค่การเรียก.append(); ดังนั้นหากเป็นเช่นนั้นจริงก็ไม่เป็นปัญหา แต่เรื่องString.concat()อะไร? มันเหมาะสม.append()หรือไม่ที่จะใช้สำหรับการเรียงต่อกันทุกครั้ง หรือสำหรับตัวแปรและตัวอักษรสามารถต่อท้ายด้วยได้.concat()หรือไม่? StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String.concat("CCCCCCCCCCC")).append(D_String .concat("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .concat("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")); กฎทั่วไปสำหรับแนวทางปฏิบัติที่ดีที่สุดและประสิทธิภาพในการดำเนินการกับสถานการณ์เหล่านี้คืออะไร? สมมติฐานของฉันถูกต้องหรือไม่+และไม่ควรใช้จริงๆ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.