คำถามติดแท็ก string-concatenation

การต่อสตริงเป็นการดำเนินการของการรวมสตริงอักขระสองตัวแบบ end-to-end


5
ตัวดำเนินการเรียงต่อสตริงใน Oracle คืออะไร
ตัวดำเนินการเรียงต่อสตริงใน Oracle SQL คืออะไร มีคุณสมบัติ "น่าสนใจ" ที่ฉันควรระวังหรือไม่ (ดูเหมือนจะชัดเจน แต่ฉันไม่พบคำถามก่อนหน้านี้ถาม)

10
Android TextView:“ อย่าเชื่อมต่อข้อความที่แสดงด้วย setText”
ฉันตั้งค่าข้อความโดยใช้setText ()ตามวิธีต่อไปนี้ prodNameView.setText("" + name); prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP))); ในแบบแรกนั้นใช้งานง่ายและอันที่สองคือการตั้งค่าข้อความด้วยการจัดรูปแบบข้อความ Android Studio น่าสนใจมากฉันใช้เมนูAnalyze -> Code Cleanupและฉันได้รับคำแนะนำจากสองบรรทัดข้างต้นเช่น อย่าเชื่อมต่อข้อความที่แสดงด้วย setText ใช้สตริงทรัพยากรกับตัวยึดตำแหน่ง น้อยกว่า ... (Ctrl + F1) เมื่อเรียกTextView # setText: อย่าโทรไปที่ Number # toString () เพื่อจัดรูปแบบตัวเลข มันจะไม่จัดการตัวคั่นเศษส่วนและตัวเลขเฉพาะสถานที่อย่างถูกต้อง พิจารณาใช้รูปแบบ String # ที่มีข้อกำหนดรูปแบบที่เหมาะสม (% d หรือ% f) แทน อย่าส่งผ่านสตริงลิเทอรัล (เช่น "สวัสดี") …

7
การต่อสตริงและจำนวนเต็มในไพ ธ อน
ในภาษาไพ ธ อนคุณมี s = "string" i = 0 print s+i จะให้ข้อผิดพลาดดังนั้นคุณเขียน print s+str(i) เพื่อไม่ให้เกิดข้อผิดพลาด ฉันคิดว่านี่เป็นวิธีที่ค่อนข้างงุ่มง่ามในการจัดการ int และ string concatenation แม้แต่จาวาก็ไม่จำเป็นต้องทำการแคสตริกับ String อย่างชัดเจนเพื่อทำการเรียงต่อกันแบบนี้ มีวิธีที่ดีกว่าในการทำเรียงต่อกันเช่นนี้โดยไม่มีการคัดเลือกนักแสดงอย่างชัดเจนใน Python

14
ฉันสามารถใช้ require (“ เส้นทาง”) เข้าร่วมเพื่อเชื่อมต่อ URL อย่างปลอดภัยได้หรือไม่
สิ่งนี้ปลอดภัยหรือไม่ที่จะใช้require("path").joinเพื่อเชื่อมต่อ URL เช่น: require("path").join("http://example.com", "ok"); //returns 'http://example.com/ok' require("path").join("http://example.com/", "ok"); //returns 'http://example.com/ok' ถ้าไม่คุณจะแนะนำวิธีใดในการทำสิ่งนี้โดยไม่ต้องเขียนโค้ดที่มี ifs

8
มีเหตุผลใดที่จะไม่ใช้ '+' เพื่อเชื่อมสองสตริงเข้าด้วยกัน?
antipattern ทั่วไปใน Python คือการต่อลำดับของสตริงโดยใช้+ในลูป สิ่งนี้ไม่ดีเนื่องจากล่าม Python ต้องสร้างออบเจ็กต์สตริงใหม่สำหรับการวนซ้ำแต่ละครั้งและจะใช้เวลากำลังสอง (เห็นได้ชัดว่า CPython เวอร์ชันล่าสุดสามารถปรับให้เหมาะสมได้ในบางกรณี แต่การใช้งานอื่น ๆ ไม่สามารถทำได้ดังนั้นโปรแกรมเมอร์จึงไม่สามารถพึ่งพาสิ่งนี้ได้) ''.joinเป็นวิธีที่ถูกต้องในการดำเนินการนี้ อย่างไรก็ตามฉันเคยได้ยินมาว่า ( รวมถึงที่นี่ใน Stack Overflow ) ว่าคุณไม่ควรใช้+สำหรับการต่อสายอักขระ แต่ควรใช้''.joinหรือใช้สตริงรูปแบบแทน ฉันไม่เข้าใจว่าเหตุใดจึงเป็นเช่นนี้หากคุณเชื่อมต่อเพียงสองสตริง ถ้าความเข้าใจของฉันถูกต้องก็ไม่ควรใช้เวลาในการกำลังสองและผมคิดว่าa + bเป็นที่สะอาดและอ่านได้มากขึ้นกว่าหรือ''.join((a, b))'%s%s' % (a, b) เป็นแนวทางปฏิบัติที่ดีที่จะใช้+เพื่อเชื่อมสองสตริงเข้าด้วยกันหรือไม่? หรือมีปัญหาที่ฉันไม่ทราบ?

12
การต่อ const char *
ฉันต้องการเชื่อมอักขระ const สองตัวเข้าด้วยกันดังนี้: const char *one = "Hello "; const char *two = "World"; ฉันจะทำอย่างนั้นได้อย่างไร? ฉันส่งผ่านสิ่งเหล่านี้char*มาจากไลบรารีของบุคคลที่สามที่มีอินเทอร์เฟซ C ดังนั้นฉันจึงไม่สามารถใช้std::stringแทนได้

6
คุณต่อท้ายสตริงที่มีอยู่แล้วได้อย่างไร?
ฉันต้องการต่อท้ายสตริงเพื่อให้ทุกครั้งที่วนซ้ำจะเพิ่มพูดว่า "test" ในสตริง เช่นเดียวกับใน PHP คุณจะทำ: $teststr = "test1\n" $teststr .= "test2\n" echo = "$teststr" echos: test1 test2 แต่ฉันต้องทำในเชลล์สคริปต์

9
เหตุใดการต่อสตริงจึงเร็วกว่าการรวมอาร์เรย์
วันนี้ฉันอ่านกระทู้นี้เกี่ยวกับความเร็วของการต่อสายอักขระ น่าแปลกที่การต่อสตริงเป็นผู้ชนะ: http://jsben.ch/#/OJ3vo ผลลัพธ์ตรงข้ามกับที่ฉันคิดไว้ นอกจากนี้ยังมีบทความจำนวนมากเกี่ยวกับเรื่องนี้ซึ่งอธิบายตรงข้ามเช่นนี้ ฉันเดาได้ว่าเบราว์เซอร์ได้รับการปรับให้เหมาะกับสตริงconcatในเวอร์ชันล่าสุด แต่จะทำได้อย่างไร เราสามารถพูดได้ว่ามันจะดีกว่าที่จะใช้+เมื่อเชื่อมต่อสตริง? ปรับปรุง ดังนั้นในการต่อสายอักขระในเบราว์เซอร์สมัยใหม่จึงได้รับการปรับให้เหมาะสมดังนั้นการใช้+เครื่องหมายจึงเร็วกว่าการใช้joinเมื่อคุณต้องการต่อสตริง แต่@Arthur ชี้ให้เห็นว่าjoinเร็วกว่าถ้าคุณต้องการเข้าร่วมสตริงด้วยตัวคั่น อัปเดต - 2020 Chrome: Array joinเกือบจะ2 times fasterเป็น String concat + See: https://stackoverflow.com/a/54970240/984471 หมายเหตุ: อาร์เรย์joinจะดีกว่าถ้าคุณมีlarge strings หากเราต้องการสร้างseveral small stringsในผลลัพธ์สุดท้ายจะเป็นการดีกว่าที่จะใช้การต่อสตริง+เนื่องจากมิฉะนั้นการใช้ Array จะต้องมีการแปลง Array to String หลายรายการในตอนท้ายซึ่งเป็นประสิทธิภาพที่เกินพิกัด

3
การต่อสตริงถูกนำไปใช้ใน Java 9 อย่างไร?
ตามที่เขียนไว้ในJEP 280: Indify String Concatenation : เปลี่ยนStringลำดับไบต์โค้ด -concatenation แบบคงที่ที่สร้างขึ้นโดยjavacใช้การinvokedynamicเรียกไปยังฟังก์ชันไลบรารี JDK สิ่งนี้จะเปิดใช้งานการเพิ่มประสิทธิภาพของการStringเรียงต่อกันในอนาคตโดยไม่ต้องมีการเปลี่ยนแปลงเพิ่มเติมกับ bytecode ที่ปล่อยjavacออกมา ที่นี่ฉันต้องการทำความเข้าใจว่าการใช้การinvokedynamicโทรคืออะไรและการเชื่อมต่อ bytecode แตกต่างจากinvokedynamicอย่างไร

5
SQL NVARCHAR และ VARCHAR Limits
ทั้งหมดฉันมีแบบสอบถาม SQL แบบไดนามิกขนาดใหญ่ (หลีกเลี่ยงไม่ได้) เนื่องจากจำนวนฟิลด์ในเกณฑ์การเลือกสตริงที่มีไดนามิก SQL จึงเพิ่มขึ้นมากกว่า 4000 ตัวอักษร ตอนนี้ฉันเข้าใจว่ามีชุดสูงสุด 4000 สำหรับNVARCHAR(MAX)แต่ดูที่ SQL ที่เรียกใช้งานใน Server Profiler สำหรับคำสั่ง DELARE @SQL NVARCHAR(MAX); SET @SQL = 'SomeMassiveString > 4000 chars...'; EXEC(@SQL); GO ดูเหมือนว่าจะใช้งานได้ (!?) สำหรับแบบสอบถามอื่นที่มีขนาดใหญ่เช่นกันมันแสดงข้อผิดพลาดซึ่งเกี่ยวข้องกับขีด จำกัด 4000 นี้ (!?) โดยทั่วไปจะตัด SQL ทั้งหมดหลังจากขีด จำกัด 4000 นี้และทำให้ฉันมีข้อผิดพลาดทางไวยากรณ์ แม้จะมีสิ่งนี้ใน profiler แต่ก็แสดงแบบสอบถาม SQL แบบไดนามิกนี้แบบเต็ม (!?) เกิดอะไรขึ้นที่นี่และฉันควรจะแปลงตัวแปร @SQL …

9
การต่อสตริงกับการแทนที่สตริงใน Python
ใน Python ตำแหน่งและเวลาของการใช้การต่อสตริงกับการแทนที่สตริงจะทำให้ฉันหายไป เนื่องจากการต่อสายอักขระได้เห็นการเพิ่มประสิทธิภาพอย่างมากนี่เป็นการตัดสินใจแบบโวหารมากกว่าการตัดสินใจในทางปฏิบัติหรือไม่? ตัวอย่างที่เป็นรูปธรรมเราควรจัดการกับการสร้าง URI ที่ยืดหยุ่นได้อย่างไร: DOMAIN = 'http://stackoverflow.com' QUESTIONS = '/questions' def so_question_uri_sub(q_num): return "%s%s/%d" % (DOMAIN, QUESTIONS, q_num) def so_question_uri_cat(q_num): return DOMAIN + QUESTIONS + '/' + str(q_num) แก้ไข: นอกจากนี้ยังมีคำแนะนำเกี่ยวกับการรวมรายการสตริงและการใช้การแทนที่ด้วยชื่อ สิ่งเหล่านี้เป็นตัวแปรในธีมหลักซึ่งเป็นวิธีที่ถูกต้องในการดำเนินการในเวลาใด ขอบคุณสำหรับคำตอบ!

3
การต่อสตริงกับ Groovy
วิธีที่ดีที่สุด (สำนวน) ในการต่อสตริงใน Groovy คืออะไร ตัวเลือกที่ 1: calculateAccountNumber(bank, branch, checkDigit, account) { bank + branch + checkDigit + account } ทางเลือกที่ 2: calculateAccountNumber(bank, branch, checkDigit, account) { "$bank$branch$checkDigit$account" } ฉันได้พบประเด็นที่น่าสนใจเกี่ยวกับหัวข้อนี้ในเว็บไซต์ Groovy เก่า: สิ่งที่คุณทำได้ แต่ดีกว่าปล่อยให้เลิกทำ เช่นเดียวกับใน Java คุณสามารถเชื่อมสตริงที่มีสัญลักษณ์ "+" เข้าด้วยกัน แต่ Java ต้องการให้หนึ่งในสองรายการของนิพจน์ "+" เป็น String ไม่ว่าจะอยู่ในตำแหน่งแรกหรือรายการสุดท้ายก็ตาม Java จะใช้เมธอด toString () …

4
ความซับซ้อนของเวลาของสตริงซ้ำต่อท้าย O (n ^ 2) หรือ O (n) จริงหรือไม่?
ฉันกำลังแก้ไขปัญหาจาก CTCI ปัญหาที่สามของบทที่ 1 ให้คุณใช้สตริงเช่น 'Mr John Smith ' และขอให้คุณแทนที่ช่องว่างตัวกลางด้วย%20: 'Mr%20John%20Smith' ผู้เขียนเสนอวิธีแก้ปัญหานี้ใน Python เรียกว่า O (n): def urlify(string, length): '''function replaces single spaces with %20 and removes trailing spaces''' counter = 0 output = '' for char in string: counter += 1 if counter > length: return output elif char …

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.