ฟังก์ชั่นใหม่สำหรับการทำงานกับสตริง ฟังก์ชั่นใหม่สำหรับการทำงานกับฟังก์ชั่นสตริง 1s 8.3
สตริงเป็นหนึ่งในประเภทข้อมูลดั้งเดิมในระบบ 1C:Enterprise 8 เส้นมีข้อความ
พิมพ์ค่าตัวแปร เส้นอยู่ในเครื่องหมายคำพูดคู่ สามารถเพิ่มตัวแปรประเภทนี้ได้หลายตัว
Per1 = "คำ 1" ;
Per2 = "คำ 2" ;
Per3 = Per1 + " " + Per2;
ในที่สุด ต่อ3จะหมายถึง " คำ 1 คำ 2″.
นอกจากนี้ ระบบ 1C:Enterprise 8 ยังมีฟังก์ชันสำหรับการทำงานกับสตริงอีกด้วย ลองดูที่หลัก:
ใส่สตริง(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — ฟังก์ชั่นนี้ได้รับการออกแบบให้แสดงกล่องโต้ตอบซึ่งผู้ใช้สามารถระบุค่าของตัวแปรประเภทได้ เส้น- พารามิเตอร์ <Строка> จำเป็นต้องมีและมีชื่อของตัวแปรที่จะใช้เขียนสตริงที่ป้อน พารามิเตอร์ <Подсказка> ทางเลือก - นี่คือชื่อของกล่องโต้ตอบ พารามิเตอร์ <Длина> เป็นทางเลือก แสดงความยาวสูงสุดของสตริงอินพุต ค่าเริ่มต้นเป็นศูนย์ ซึ่งหมายถึงความยาวไม่จำกัด พารามิเตอร์ <Многострочность> ไม่จำเป็น. กำหนดโหมดป้อนข้อความหลายบรรทัด: จริง—ป้อนข้อความหลายบรรทัดพร้อมตัวคั่นบรรทัด เท็จ - ป้อนสตริงแบบง่าย
คุณสามารถป้อนสตริงได้หากคุณทราบรหัสอักขระใน Unicode:
เครื่องหมาย(<КодСимвола>) — รหัสถูกป้อนเป็นตัวเลข
ตัวอักษร= สัญลักษณ์ (1103) ;
// ฉัน
นอกจากนี้ยังมีฟังก์ชันผกผันที่ช่วยให้คุณสามารถค้นหารหัสของสัญลักษณ์ได้<Строка>, <НомерСимвола>) — รหัสสัญลักษณ์(
ส่งกลับหมายเลข Unicode ของอักขระที่ระบุเป็นตัวเลข
ฟังก์ชันการแปลงตัวพิมพ์ข้อความ:<Строка>) VReg(
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่<Строка>) NREG(
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์เล็ก<Строка>) เทรก(
— แปลงอักขระทั้งหมดในสตริงให้เป็นตัวพิมพ์ชื่อเรื่อง นั่นคือตัวอักษรตัวแรกในทุกคำจะถูกแปลงเป็นตัวพิมพ์ใหญ่ และตัวอักษรที่เหลือจะถูกแปลงเป็นตัวพิมพ์เล็ก
ฟังก์ชั่นสำหรับการค้นหาและแทนที่อักขระในสตริง:<Строка>, <ПодстрокаПоиска>) หา(
— ค้นหาหมายเลขอักขระของการเกิดขึ้นของสตริงย่อยการค้นหา ตัวอย่างเช่น:
ค้นหา ("สตริง" , "โอเค" ) ;<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 Strค้นหา(— ค้นหาหมายเลขอักขระของการเกิดขึ้นของสตริงย่อยการค้นหา หมายเลขที่เกิดขึ้นจะถูกระบุในพารามิเตอร์ที่เกี่ยวข้อง ในกรณีนี้ การค้นหาจะเริ่มต้นด้วยอักขระที่ระบุหมายเลขไว้ในพารามิเตอร์
ตำแหน่งเริ่มต้น ค้นหาได้จากจุดเริ่มต้นหรือจุดสิ้นสุดของสตริง ตัวอย่างเช่น:จำนวนที่ 4 เกิดขึ้น = Str ค้นหา (
"การป้องกัน"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – ค้นหาสตริงย่อยการค้นหาที่เกิดขึ้นทั้งหมดในสตริงต้นทางและแทนที่ด้วยสตริงย่อยการแทนที่
StrReplace ("สตริง" , "โอเค" , "" ) ;
// หน้าหนังสือ<Строка>) สตริงว่าง( – ตรวจสอบสตริงเพื่อหาอักขระที่มีนัยสำคัญ หากไม่มีอักขระที่มีนัยสำคัญหรือไม่มีอักขระเลย ระบบจะส่งกลับค่าจริง - มิฉะนั้น -.
โกหก<Строка>, <ПодстрокаПоиска>) StrNumber เกิดขึ้น(
– คำนวณจำนวนครั้งของสตริงย่อยการค้นหาในสตริงต้นทาง StrNumber เกิดขึ้น ("เรียนรู้ ศึกษา และศึกษาอีกครั้ง"
, "ศึกษา" , "" ) ; // 3<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — Strเทมเพลต( แทนที่พารามิเตอร์เป็นสตริงตามตัวเลข บรรทัดจะต้องมีเครื่องหมายทดแทนในรูปแบบ: “%1..%N” การกำหนดหมายเลขเครื่องหมายเริ่มต้นจาก 1 หากค่าพารามิเตอร์ไม่ได้กำหนด
สตริงว่างจะถูกแทนที่ เทมเพลต Str (, "1" , "2" ) ; "พารามิเตอร์ 1 = %1, พารามิเตอร์ 2 = %2"
// พารามิเตอร์ 1= 1, พารามิเตอร์ 2 = 2
ฟังก์ชั่นการแปลงสตริง:<Строка>, <ЧислоСимволов>) สิงโต(
– ส่งคืนอักขระตัวแรกของสตริง<Строка>, <ЧислоСимволов>) ขวา(
– ส่งคืนอักขระตัวสุดท้ายของสตริง<Строка>, <НачальныйНомер>, <ЧислоСимволов>) วันพุธ(<ЧислоСимволов>– ส่งคืนสตริงที่มีความยาว<НачальныйНомер>.
โดยเริ่มจากสัญลักษณ์<Строка>) —ชื่อย่อL(
ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริง<Строка>) อักษรย่อ(
— ตัดอักขระที่ไม่มีนัยสำคัญทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด<Строка>) อักษรย่อLP(
– ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในบรรทัดและทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด<Строка>, <НомерСтроки>) StrGetString(
– รับสตริงหลายบรรทัดตามหมายเลข
คุณสมบัติอื่นๆ:<Строка>) Strความยาว(
– ส่งกลับจำนวนอักขระในสตริง<Строка>) StrNumberRow(
– ส่งกลับจำนวนบรรทัดในสตริงหลายบรรทัด บรรทัดจะถือว่าใหม่หากแยกจากบรรทัดก่อนหน้าด้วยอักขระขึ้นบรรทัดใหม่<Строка1>, <Строка2> ) Strเปรียบเทียบ( – เปรียบเทียบสองสายในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ ฟังก์ชั่นทำงานคล้ายกับวัตถุการเปรียบเทียบค่า
- - ผลตอบแทน:
- 1 - ถ้าบรรทัดแรกมากกว่าบรรทัดที่สอง
- -1 - ถ้าบรรทัดที่สองมากกว่าบรรทัดแรก
0 - ถ้าสตริงเท่ากัน
StrCompare("บรรทัดแรก" , "บรรทัดที่สอง" );// 1
บันทึกจาก มองผ่านกระจก
18/08/2014 ฟังก์ชั่นใหม่สำหรับการทำงานกับสตริง
คุณสามารถดำเนินการทั้งหมดที่เคยใช้ฟังก์ชันใหม่มาก่อนได้ การใช้อัลกอริธึมที่ซับซ้อนไม่มากก็น้อยที่เขียนด้วยภาษาในตัว ดังนั้นฟังก์ชันใหม่ไม่ได้ให้ความสามารถใหม่ขั้นพื้นฐานแก่คุณ อย่างไรก็ตาม ช่วยให้คุณสามารถลดจำนวนโค้ดและทำให้โค้ดง่ายขึ้นและเข้าใจได้มากขึ้น นอกจากนี้ยังช่วยให้คุณเร่งความเร็วในการดำเนินการได้อีกด้วย เพราะแน่นอนว่าฟังก์ชั่นที่นำมาใช้ในแพลตฟอร์มนั้นทำงานได้เร็วกว่าอัลกอริทึมที่คล้ายกันซึ่งเขียนด้วยภาษาในตัว
ฟังก์ชันการจัดรูปแบบ StrTemplate()
ฟังก์ชันนี้จะแทนที่พารามิเตอร์เป็นสตริง ความจำเป็นในการแปลงดังกล่าวมักเกิดขึ้น เช่น เมื่อแสดงข้อความเตือน ไวยากรณ์สำหรับฟังก์ชันนี้เป็นดังนี้:
, "ศึกษา" , "" ) ; // 3<Шаблон>, <Значение1-Значение10>)
<Шаблон>- นี่คือสตริงที่คุณต้องใช้ในการแทนที่การแสดงพารามิเตอร์
<Значение1> , ... <Значение10>- นี่คือพารามิเตอร์ (สูงสุดสิบ) ซึ่งจะต้องแทนที่การแทนค่าในสตริง
หากต้องการระบุตำแหน่งเฉพาะในเทมเพลตที่คุณต้องการดำเนินการทดแทน คุณต้องใช้เครื่องหมาย เช่น %1, ... %10 จำนวนเครื่องหมายที่เกี่ยวข้องกับเทมเพลตและจำนวนพารามิเตอร์ที่มีค่าต้องตรงกัน
ตัวอย่างเช่น ผลลัพธ์ของการดำเนินการตัวดำเนินการดังกล่าว:
จะมีบรรทัด:
ข้อผิดพลาดของข้อมูลในบรรทัด 2 (ต้องระบุประเภทวันที่)
ฟังก์ชันสำหรับการทำงานกับสตริง StrCompare()
ฟังก์ชันนี้เปรียบเทียบสองสตริงในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ ตัวอย่างเช่นเช่นนี้:
คุณสามารถดำเนินการเดียวกันก่อนหน้านี้ได้โดยใช้ออบเจ็กต์ – เปรียบเทียบสองสายในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ ฟังก์ชั่นทำงานคล้ายกับวัตถุ:
อย่างไรก็ตาม การใช้ฟีเจอร์ใหม่จะดูง่ายขึ้น และนอกเหนือจากนี้ ฟังก์ชัน ซึ่งตรงข้ามกับวัตถุ – เปรียบเทียบสองสายในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ ฟังก์ชั่นทำงานคล้ายกับวัตถุทำงานได้ทั้งในไคลเอ็นต์แบบบางและเว็บไคลเอ็นต์
ฟังก์ชันสำหรับการทำงานกับสตริง StrStartsWith(), StrEndsAt()
ฟังก์ชันเหล่านี้จะกำหนดว่าสตริงเริ่มต้นด้วยสตริงย่อยที่ระบุ หรือสตริงลงท้ายด้วยสตริงย่อยที่ระบุหรือไม่ อัลกอริธึมสำหรับฟังก์ชั่นเหล่านี้ไม่ใช่เรื่องยากที่จะนำไปใช้ในภาษาฝังตัว แต่การมีอยู่ของพวกมันทำให้คุณสามารถเขียนโค้ดที่สะอาดตาและเข้าใจได้มากขึ้น และพวกมันทำงานเร็วขึ้น
ตัวอย่างเช่นสะดวกในการใช้งานในตัวดำเนินการ ถ้า:
ฟังก์ชั่นสำหรับการทำงานกับสตริง StrDivide(), StrConnect()
ฟังก์ชันเหล่านี้แบ่งสตริงออกเป็นส่วนๆ โดยใช้ตัวคั่นที่ระบุ หรือในทางกลับกัน จะรวมหลายบรรทัดเป็นหนึ่งเดียว โดยแทรกตัวคั่นที่เลือกไว้ระหว่างบรรทัดเหล่านั้น สะดวกสำหรับการสร้างหรือวิเคราะห์บันทึกและวารสารเทคโนโลยี ตัวอย่างเช่น คุณสามารถแยกวิเคราะห์รายการบันทึกทางเทคโนโลยีออกเป็นส่วนๆ ที่เหมาะสมสำหรับการวิเคราะห์เพิ่มเติมได้อย่างง่ายดาย:
ฟังก์ชันสำหรับการทำงานกับสตริง StrFind()
แทนฟังก์ชั่นแบบเก่า หา()เราได้ใช้ฟังก์ชันใหม่ที่มีความสามารถเพิ่มเติม:
- ค้นหาในทิศทางต่างๆ (ตั้งแต่ต้นจนจบ)
- ค้นหาจากตำแหน่งที่ระบุ
- ค้นหาเหตุการณ์ด้วยหมายเลขที่ระบุ (วินาที สาม ฯลฯ)
ในความเป็นจริง มันซ้ำซ้อนความสามารถของฟังก์ชันเก่า สิ่งนี้ทำเพื่อรักษาความเข้ากันได้กับโมดูลที่คอมไพล์ในเวอร์ชันเก่า ฟังก์ชั่นเก่า หา()ขอแนะนำว่าอย่าใช้อีก
ด้านล่างนี้เป็นตัวอย่างการใช้ความสามารถในการค้นหาใหม่ การค้นหาแบบย้อนกลับมีประโยชน์เมื่อคุณต้องการส่วนสุดท้ายของสตริงที่เป็นทางการ เช่น ชื่อไฟล์แบบเต็มใน URL และการค้นหาจากตำแหน่งที่ระบุจะช่วยในกรณีที่คุณต้องการค้นหาในส่วนที่รู้จัก ไม่ใช่ในทั้งบรรทัด
สวัสดีทุกคน
วันนี้เขาขอไม่แสดงคำนำหน้าเอกสารเมื่อพิมพ์เอกสารการดำเนินการ ฉันแก้ไขปัญหาดังนี้
StrReplace(หมายเลข, Lev(หมายเลข, 3), "" );
เมื่อฉันดูตัวช่วยไวยากรณ์ ฉันชอบมันมากจนฉันอยากเขียนถึง การทำงานกับสตริงใน 1C:Enterprise.
สตริงใน 1C อ้างถึงประเภทข้อมูลดั้งเดิม
หากคุณดูวิธีใช้ 1C เราจะเห็นคำอธิบายของประเภทสตริงต่อไปนี้:
ค่าประเภทนี้ประกอบด้วยสตริง Unicode ที่มีความยาวตามต้องการ
หากคุณใช้คำพูดของคุณเองเกี่ยวกับสตริง มันจะได้ผล สตริงเป็นค่าคงที่ที่ประกอบด้วยอักขระต่างๆ โดยมีเครื่องหมายคำพูดล้อมรอบเสมอ
การตั้งเส้น
คำทักทาย = "สวัสดีผู้โดยสาร";
เส้นหลายบรรทัดในการกำหนดค่าทั่วไปมักสร้างขึ้นโดยใช้ตัวคั่นแนวตั้ง “|”:
สตริง = "หลายบรรทัด
|สตริง
|เขียน
|ข้อความ";
เครื่องหมายคำพูดภายในสตริงถูกระบุด้วยเครื่องหมายคำพูดคู่
String = ""ข้อความในเครื่องหมายคำพูด"";
มีการดำเนินการหลายอย่างกับสตริง (การค้นหาภายในสตริง การกำหนดการดำเนินการแรก ฯลฯ) ควรดูที่ Syntax Assistant จะดีกว่า
ตัวช่วยไวยากรณ์ - คำอธิบายทั่วไปของภาษาบิวท์อิน -> ฟังก์ชันบิวท์อิน -> ฟังก์ชันสำหรับการทำงานกับสตริง
ฟังก์ชั่นสำหรับการทำงานกับสตริง
นี่เป็นบทสรุปโดยย่อของฟังก์ชันสำหรับการทำงานกับสตริง:
ฟังก์ชันการแปลงตัวพิมพ์ข้อความ:<Строка>)
— ฟังก์ชั่นแปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่
นอกจากนี้ยังมีฟังก์ชันผกผันที่ช่วยให้คุณสามารถค้นหารหัสของสัญลักษณ์ได้<Строка>, <НомерСимвола>)
– ฟังก์ชั่นรับรหัสของอักขระที่อยู่ในสตริงที่ส่งที่ตำแหน่งตามหมายเลขที่ระบุ
ฟังก์ชั่นการแปลงสตริง:<Строка>, <ЧислоСимволов>) – ฟังก์ชั่นเลือกอักขระตัวแรกซ้ายของสตริง
ฟังก์ชั่นสำหรับการค้นหาและแทนที่อักขระในสตริง:<Строка>, <ПодстрокаПоиска>) — ฟังก์ชั่นค้นหาสตริงการค้นหาที่ปรากฏเป็นสตริงย่อยในสตริงต้นทาง
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่<Строка>) — ฟังก์ชั่นแปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์เล็ก
– ส่งคืนอักขระตัวแรกของสตริง<Строка>, <ЧислоСимволов>) – ฟังก์ชันนี้แตกต่างจากฟังก์ชันด้านซ้ายตรงที่จะเลือกอักขระตัวสุดท้ายจากด้านขวาของสตริง
// หน้าหนังสือ<Строка>) — ฟังก์ชั่นตรวจสอบสตริงว่ามีอักขระสำคัญหรือไม่
เครื่องหมาย(<КодСимвола>) — ฟังก์ชั่นแปลงโค้ดอักขระให้เป็นสตริงที่มีอักขระ
โดยเริ่มจากสัญลักษณ์<Строка>) — ฟังก์ชั่นตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริง
— ตัดอักขระที่ไม่มีนัยสำคัญทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด<Строка>) — ฟังก์ชันจะตัดแต่งอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในบรรทัด และเว้นวรรคทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด
ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริง<Строка>) — ฟังก์ชั่นตัดอักขระที่ไม่มีนัยสำคัญทางด้านขวาของอักขระสำคัญตัวสุดท้ายในสตริง
– ส่งคืนอักขระตัวสุดท้ายของสตริง<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — ฟังก์ชั่นเลือกชุดอักขระโดยเริ่มจากอักขระ<НачальныйНомер>, จำนวนทั้งหมด<ЧислоСимволов>.
คุณสมบัติอื่นๆ:<Строка>) — ฟังก์ชั่นรับจำนวนอักขระในบรรทัด
"การป้องกัน"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — ฟังก์ชันค้นหาสตริงย่อยการค้นหาที่เกิดขึ้นทั้งหมดในสตริงต้นทางและแทนที่ด้วยสตริงย่อยทดแทน
– ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในบรรทัดและทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด<Строка>, <НомерСтроки>) - ฟังก์ชั่นรับสตริงหลายบรรทัดตามตัวเลข
โกหก<Строка>, <ПодстрокаПоиска>) — ฟังก์ชันคำนวณจำนวนครั้งของสตริงย่อยการค้นหาในสตริงต้นทาง
– ส่งกลับจำนวนอักขระในสตริง<Строка>) — ฟังก์ชั่นนับจำนวนบรรทัดในสตริงหลายบรรทัด ในสตริงหลายบรรทัด บรรทัดจะถูกคั่นด้วยการขึ้นบรรทัดใหม่
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์เล็ก<Строка>) — ฟังก์ชั่นแปลงสตริงเป็นตัวพิมพ์ชื่อเรื่อง ซึ่งหมายความว่าอักขระตัวแรกของแต่ละคำจะถูกแปลงเป็นตัวพิมพ์ชื่อเรื่อง หรือเป็นตัวพิมพ์ใหญ่หากไม่ได้ระบุตัวพิมพ์ใหญ่สำหรับอักขระ อักขระที่เหลือจะถูกแปลงเป็นตัวพิมพ์เล็ก
ประเภทการแปลง
สำหรับการแปลงประเภทข้อมูลอย่างชัดเจน มีฟังก์ชันชื่อเดียวกันกับประเภทข้อมูลที่เกิดการแปลง: String(<Значение>)
StringFromNumbers = สตริง (หมายเลข);
ฟังก์ชั่นทั้งหมดนี้มีการอธิบายโดยละเอียดใน Syntax Assistant ฉันอธิบายว่า Syntax Assistant สามารถช่วยโปรแกรมเมอร์มือใหม่ได้อย่างไรในบทความ
ตัวอย่างการทำงานกับสตริง
การแปลงตัวเลขเป็นสตริงและกลับ
หากต้องการรับการแสดงสตริงของปี ให้ใช้ฟังก์ชันรูปแบบ
ปี = รูปแบบ(CurrentDate(), "DF=yyyy") // ปี = "2012"
หากต้องการแปลงตัวเลขเป็นสตริงโดยไม่ต้องใส่อักขระตัวคั่นกลุ่ม (เว้นวรรค) คุณต้องใช้ฟังก์ชัน Format พร้อมด้วยพารามิเตอร์ NG=0:
Number = 2012 Line = Format(Number, "NH=0" );
//สตริง = "2012"
สตริง ไม่มีช่องว่าง เส้นแถวใน 1C 8.3 ในภาษา 1C ในตัวเป็นค่าของประเภทดั้งเดิม
- ค่าประเภทนี้ประกอบด้วยสตริง Unicode ที่มีความยาวตามต้องการ ตัวแปรประเภทสตริงคือชุดอักขระที่อยู่ในเครื่องหมายคำพูด
ตัวอย่างที่ 1 มาสร้างตัวแปรสตริงพร้อมข้อความกันดีกว่า
StringVariable = "สวัสดีชาวโลก!";
ฟังก์ชั่นสำหรับการทำงานกับสตริงใน 1s 8.3
ส่วนนี้จะมีฟังก์ชันหลักที่ช่วยให้คุณสามารถเปลี่ยนบรรทัดใน 1c หรือวิเคราะห์ข้อมูลที่อยู่ในนั้นได้
คุณสมบัติอื่นๆ:<Строка>) StrLength
ตัวอย่างที่ 2 ลองนับจำนวนอักขระในบรรทัด “Hello world!”
String = "สวัสดีชาวโลก!"; NumberofCharacters = StrLength (สตริง); รายงาน (อักขระตัวเลข);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนอักขระในบรรทัด: 11
อักษรย่อL
โดยเริ่มจากสัญลักษณ์<Строка>)
- ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริง
ตัวละครรอง:
- ช่องว่าง;
- พื้นที่ไม่แตกหัก
- การจัดตาราง;
- การคืนรถ;
- ฟีดบรรทัด;
- การแปลแบบฟอร์ม (หน้า)
ตัวอย่างที่ 3 ลบช่องว่างทั้งหมดออกจากด้านซ้ายของบรรทัด "world!" และเพิ่มบรรทัด "สวัสดี" ลงไป
String = ตัวย่อ ("โลก!"); สตริง = "สวัสดี"+สตริง; รายงาน (สตริง);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "Hello world!" บนหน้าจอ
ย่อ
ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริง<Строка>) - ตัดอักขระที่ไม่มีนัยสำคัญไปทางด้านขวาของอักขระสำคัญตัวแรกในสตริง
ตัวอย่างที่ 4 แบบฟอร์มจากบรรทัด "สวัสดี" และ "สันติภาพ!" วลี "สวัสดีชาวโลก!"
Line = ตัวย่อ ("Hello ")+" "+ ตัวย่อ (" world!"); รายงาน (สตริง);
ชื่อย่อLP
— ตัดอักขระที่ไม่มีนัยสำคัญทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด<Строка>)
- ตัดอักขระที่ไม่มีนัยสำคัญทางด้านขวาของอักขระสำคัญตัวแรกในสตริง และยังตัดแต่งอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริงด้วย ฟังก์ชันนี้ใช้บ่อยกว่าสองฟังก์ชันก่อนหน้าเนื่องจากเป็นสากลมากกว่า
ตัวอย่างที่ 5 ลบอักขระที่ไม่มีนัยสำคัญทางซ้ายและขวาในชื่อของคู่สัญญา
คู่สัญญา = ไดเรกทอรี คู่สัญญาค้นหาตามรายละเอียด ("TIN", "0777121211"); AccountObject = บัญชี GetObject(); CounterpartyObject.Name = AbbrLP (CounterpartyObject.Name); AccountObject.เขียน();
สิงโต
ฟังก์ชั่นการแปลงสตริง:<Строка>, <ЧислоСимволов>)
- รับอักขระตัวแรกของสตริง โดยระบุจำนวนอักขระในพารามิเตอร์ จำนวนอักขระ
ตัวอย่างที่ 6. ให้ในโครงสร้าง พนักงานประกอบด้วยชื่อ นามสกุล และนามสกุลของพนักงาน รับสตริงที่มีนามสกุลและชื่อย่อ
NameInitial = Lev (ชื่อพนักงาน, 1); ชื่อย่อของผู้อุปถัมภ์ = ราศีสิงห์(พนักงาน. ชื่อผู้อุปถัมภ์, 1); FullName = Employee.LastName + " " + ชื่อเริ่มต้น + "."
+ ชื่อกลาง + "";
– ส่งคืนอักขระตัวแรกของสตริง<Строка>, <ЧислоСимволов>) ขวา จำนวนอักขระ- รับอักขระตัวสุดท้ายของสตริง ซึ่งเป็นจำนวนอักขระที่ระบุในพารามิเตอร์
หากจำนวนอักขระที่ระบุเกินความยาวของสตริง ระบบจะส่งคืนสตริงทั้งหมด ตัวอย่างที่ 7 ให้เขียนวันที่ในรูปแบบ “yyyymmdd” ต่อท้ายตัวแปรสตริง รับสตริงพร้อมวันที่แล้วแปลงเป็นประเภท.
วันที่
String = "วันที่ปัจจุบัน: 20170910"; StringDate = สิทธิ์ (สตริง, 8); วันที่ = วันที่ (StringDate);
– ส่งคืนอักขระตัวสุดท้ายของสตริง<Строка>, <НачальныйНомер>, <ЧислоСимволов>) วันพุธ เส้น- รับสตริงย่อยจากสตริงที่ส่งผ่านเป็นพารามิเตอร์ โดยเริ่มจากอักขระที่ระบุหมายเลขไว้ในพารามิเตอร์หมายเลขเริ่มต้น จำนวนอักขระและความยาวที่ส่งผ่านไปยังพารามิเตอร์ โดยเริ่มจากอักขระที่ระบุหมายเลขไว้ในพารามิเตอร์ระบุค่าน้อยกว่าหรือเท่ากับศูนย์ ดังนั้นพารามิเตอร์จะใช้ค่า 1 หากพารามิเตอร์ จำนวนอักขระไม่ได้ระบุ จะเลือกอักขระจนถึงท้ายบรรทัด
ตัวอย่างที่ 8 ให้ตัวแปรสตริงที่เริ่มต้นจากตำแหน่งที่เก้ามีรหัสภูมิภาค คุณควรรับมันและเขียนเป็นบรรทัดแยกกัน
String = "ภูมิภาค: 99 มอสโก"; ภูมิภาค = เฉลี่ย (สตริง, 9, 2);
ค้นหาหน้า
ค้นหา ("สตริง" , "โอเค" ) ;<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - ค้นหาสตริงย่อยที่ระบุในสตริง โดยส่งคืนหมายเลขตำแหน่งของอักขระตัวแรกของสตริงย่อยที่พบ ลองดูที่พารามิเตอร์ของฟังก์ชันนี้:
- เส้น- สตริงต้นทาง;
- ค้นหาสตริงย่อย- ค้นหาสตริงย่อย
- ทิศทางการค้นหา- ระบุทิศทางในการค้นหาสตริงย่อยในสตริง สามารถรับค่า:
- ค้นหาทิศทางตั้งแต่เริ่มต้น;
- ค้นหา ทิศทางสิ้นสุด;
- ตำแหน่งเริ่มต้น- ระบุตำแหน่งในสตริงที่การค้นหาเริ่มต้น
- จำนวนที่เกิดขึ้น- ระบุหมายเลขที่เกิดขึ้นของสตริงย่อยที่ค้นหาในสตริงต้นทาง
ตัวอย่างที่ 9 ในบรรทัด “Hello world!” กำหนดตำแหน่งของอักขระ "และ" ที่ปรากฏครั้งสุดท้าย
PositionNumber = StrFind("สวัสดีชาวโลก!", "และ", ค้นหาทิศทางสิ้นสุด); รายงาน(หมายเลขตำแหน่ง);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนครั้งล่าสุดของสัญลักษณ์ "และ": 9
VReg
ฟังก์ชันการแปลงตัวพิมพ์ข้อความ:<Строка>) - แปลงอักขระทั้งหมดในสตริงที่ระบุใน 1s8 เป็นตัวพิมพ์ใหญ่
ตัวอย่างที่ 10: แปลงสตริง "hello world!" เป็นตัวพิมพ์ใหญ่
StringVreg = VReg("สวัสดีชาวโลก!"); รายงาน (StringVreg);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "HELLO WORLD!"
นเร็ก
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่<Строка>) - แปลงอักขระทั้งหมดของสตริงที่ระบุใน 1s 8 เป็นตัวพิมพ์เล็ก
ตัวอย่างที่ 11: แปลงสตริง "HELLO WORLD!" เป็นตัวพิมพ์เล็ก
StringNreg = NReg("สวัสดีชาวโลก!"); รายงาน (StringVreg);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "hello world!"
เทร็ก
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์เล็ก<Строка>) - แปลงสตริงดังต่อไปนี้: อักขระตัวแรกของแต่ละคำจะถูกแปลงเป็นตัวพิมพ์ใหญ่ อักขระที่เหลือของคำจะถูกแปลงเป็นตัวพิมพ์เล็ก
ตัวอย่างที่ 12: เปลี่ยนตัวอักษรตัวแรกของคำในบรรทัด “hello world!” ให้เป็นตัวพิมพ์ใหญ่
StringTreg = TReg("สวัสดีชาวโลก!"); รายงาน (StringTreg);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "Hello World!"
เครื่องหมาย
เครื่องหมาย(<КодСимвола>) - รับอักขระด้วยรหัส Unicod
ตัวอย่างที่ 13 เพิ่มด้านซ้ายและขวาในบรรทัด “Hello World!” สัญลักษณ์ ★
StringWithStars = สัญลักษณ์("9733")+"สวัสดีชาวโลก!"+สัญลักษณ์("9733"); รายงาน (StringWithStars);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด “★Hello World!★”
รหัสสัญลักษณ์
นอกจากนี้ยังมีฟังก์ชันผกผันที่ช่วยให้คุณสามารถค้นหารหัสของสัญลักษณ์ได้<Строка>, <НомерСимвола>) - รับโค้ดอักขระ Unicode จากสตริงที่ระบุในพารามิเตอร์แรก ซึ่งอยู่ที่ตำแหน่งที่ระบุในพารามิเตอร์ตัวที่สอง
ตัวอย่างที่ 14 ค้นหารหัสของอักขระตัวสุดท้ายในบรรทัด “Hello World!”
String = "สวัสดีชาวโลก!"; CharacterCode = CharacterCode (สตริง, StrLength (สตริง)); แจ้ง (รหัสตัวละคร);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงโค้ดสัญลักษณ์ “!” - 33.
EmptyString
// หน้าหนังสือ<Строка>) - ตรวจสอบว่าสตริงประกอบด้วยอักขระที่ไม่มีนัยสำคัญเท่านั้นหรือไม่ กล่าวคือ ว่างเปล่าหรือไม่
ตัวอย่างที่ 15 ตรวจสอบว่าสตริงที่ประกอบด้วยช่องว่างสามช่องว่างเปล่าหรือไม่
ว่างเปล่า = EmptyString(" "); รายงาน(ว่าง);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงคำว่า "ใช่" (นิพจน์สตริงของค่าตรรกะ – ตรวจสอบสตริงเพื่อหาอักขระที่มีนัยสำคัญ หากไม่มีอักขระที่มีนัยสำคัญหรือไม่มีอักขระเลย ระบบจะส่งกลับค่า).
แทนที่หน้า
"การป้องกัน"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - ค้นหาสตริงย่อยการค้นหาที่เกิดขึ้นทั้งหมดในสตริงต้นทาง และแทนที่ด้วยสตริงย่อยการแทนที่
ตัวอย่างที่ 16 ในบรรทัด “Hello World!” แทนที่คำว่า "สันติภาพ" ด้วยคำว่า "เพื่อน"
String = StrReplace("สวัสดีชาวโลก!", "โลก", "เพื่อน"); รายงาน (สตริง);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "Hello Friends!"
StrNumberLines
– ส่งกลับจำนวนอักขระในสตริง<Строка>) - ช่วยให้คุณนับจำนวนบรรทัดในสตริงหลายบรรทัด หากต้องการขึ้นบรรทัดใหม่ใน 1 วินาที 8 ให้ใช้สัญลักษณ์ ป.ล(อักขระขึ้นบรรทัดใหม่)
ตัวอย่างที่ 17 กำหนดจำนวนบรรทัดในข้อความ:
“บรรทัดแรก
บรรทัดที่สอง
บรรทัดที่สาม”
Number = StrNumberString("บรรทัดแรก"+Characters.PS +"บรรทัดที่สอง"+Symbols.PS +"บรรทัดที่สาม"); รายงาน(หมายเลข);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนบรรทัดในข้อความ: 3
StrGetString
– ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในบรรทัดและทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด<Строка>, <НомерСтроки>) - รับค่าบรรทัดในสตริงหลายบรรทัดตามหมายเลข การกำหนดหมายเลขบรรทัดเริ่มต้นจาก 1
ตัวอย่างที่ 18 รับบรรทัดสุดท้ายในข้อความ:
“บรรทัดแรก
บรรทัดที่สอง
บรรทัดที่สาม”
ข้อความ = "บรรทัดแรก" + สัญลักษณ์ PS + "บรรทัดที่สอง" + สัญลักษณ์ LastRow = StrGetRow(ข้อความ, StrNumberLines(ข้อความ)); รายงาน(บรรทัดสุดท้าย);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "บรรทัดที่สาม"
จำนวนหน้าที่เกิดขึ้น
โกหก<Строка>, <ПодстрокаПоиска>) - ส่งกลับจำนวนครั้งของสตริงย่อยที่ระบุในสตริง ฟังก์ชันนี้คำนึงถึงขนาดตัวพิมพ์
ตัวอย่างที่ 19 พิจารณาว่าตัวอักษร "c" ปรากฏในบรรทัด "บรรทัดใน 1 วินาที 8.3 และ 8.2" กี่ครั้งโดยไม่คำนึงถึงกรณี
Line = "เส้นใน 1 วินาที 8.3 และ 8.2"; NumberOccurrences = StrNumberOccurrences (Vreg (สตริง), "C"); รายงาน(จำนวนครั้ง);
ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนครั้งที่เกิดขึ้น: 2.
เพจเริ่มต้นด้วย
StrStartsด้วย(<Строка>, <СтрокаПоиска>) - ตรวจสอบว่าสตริงที่ส่งผ่านในพารามิเตอร์แรกเริ่มต้นด้วยสตริงในพารามิเตอร์ตัวที่สองหรือไม่
ตัวอย่างที่ 20 ตรวจสอบว่า TIN ของคู่สัญญาที่เลือกเริ่มต้นด้วยหมายเลข 1 หรือไม่ ให้ในตัวแปร คู่สัญญา คู่สัญญา.
TIN = คู่สัญญา TIN; StartsUNits = StrStartsWith(TIN, "1"); ถ้าเริ่มต้นด้วยหน่วยแล้ว // รหัสของคุณ EndIf;
หน้าสิ้นสุดเปิด
StrEndsด้วย(<Строка>, <СтрокаПоиска>) - ตรวจสอบว่าสตริงที่ส่งผ่านในพารามิเตอร์แรกลงท้ายด้วยสตริงในพารามิเตอร์ตัวที่สองหรือไม่
ตัวอย่างที่ 21 ตรวจสอบว่า TIN ของคู่สัญญาที่เลือกลงท้ายด้วยหมายเลข 2 หรือไม่ ให้ในตัวแปร คู่สัญญาการอ้างอิงถึงองค์ประกอบไดเร็กทอรีจะถูกเก็บไว้ คู่สัญญา.
TIN = คู่สัญญา TIN; EndsWithTwo = StrEndsWith(TIN, "2"); ถ้า EndsInTwo แล้ว // รหัสของคุณ EndIf;
การแยกหน้า
สตริไดไวด์(<Строка>, <Разделитель>, <ВключатьПустые>) - แยกสตริงออกเป็นส่วนๆ โดยใช้อักขระตัวคั่นที่ระบุ และเขียนสตริงผลลัพธ์ลงในอาร์เรย์ พารามิเตอร์แรกเก็บสตริงต้นฉบับ พารามิเตอร์ที่สองประกอบด้วยสตริงที่มีตัวคั่น พารามิเตอร์ที่สามระบุว่าควรเขียนสตริงว่างลงในอาร์เรย์หรือไม่ (โดยค่าเริ่มต้น – ตรวจสอบสตริงเพื่อหาอักขระที่มีนัยสำคัญ หากไม่มีอักขระที่มีนัยสำคัญหรือไม่มีอักขระเลย ระบบจะส่งกลับค่า).
ตัวอย่างที่ 22. ให้เรามีสตริงที่มีตัวเลขคั่นด้วยสัญลักษณ์ “;” จะได้อาร์เรย์ของตัวเลขจากสตริง
สตริง = "1; 2; 3"; Array = StrDivide(สตริง, ";"); สำหรับการนับ = 0 โดย Array.Quantity() - 1 รอบความพยายาม Array[Count] = Number(AbbrLP(Array[Count]));
อาร์เรย์ข้อยกเว้น [Sch] = 0;
สิ้นสุดความพยายามEndCycle;
จากผลของการดำเนินการ จะได้อาร์เรย์ที่มีตัวเลขตั้งแต่ 1 ถึง 3<Строки>, <Разделитель>) เพจคอนเน็ค
StrConnect(
- แปลงอาร์เรย์ของสตริงจากพารามิเตอร์แรกเป็นสตริงที่มีองค์ประกอบทั้งหมดของอาร์เรย์คั่นด้วยตัวคั่นที่ระบุในพารามิเตอร์ตัวที่สอง
ตัวอย่างที่ 23 ใช้อาร์เรย์ของตัวเลขจากตัวอย่างก่อนหน้านี้ รับสตริงดั้งเดิม
สำหรับบัญชี = 0 โดย Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); สิ้นสุดรอบ; แถว = StrConnect(อาร์เรย์, "; ");
มีกลไกบางอย่างในการทำงานกับสตริงในการสืบค้น 1C ขั้นแรก สามารถเพิ่มบรรทัดได้ ประการที่สอง คุณสามารถใช้สตริงย่อยจากสตริงได้ ประการที่สาม สามารถเปรียบเทียบสตริงได้ รวมถึงตามรูปแบบด้วย นั่นอาจเป็นทั้งหมดที่สามารถทำได้ด้วยสตริง
การเพิ่มสตริง
หากต้องการเพิ่มแถวในการสืบค้น จะใช้การดำเนินการ "+" คุณสามารถเพิ่มได้เฉพาะสตริงที่มีความยาวจำกัดเท่านั้น
เลือก "ชื่อ: " + คู่สัญญา ชื่อ AS คอลัมน์ 1 จากไดเร็กทอรี คู่สัญญา AS คู่สัญญา โดยที่ลิงก์ = &ลิงก์<Строка>, <НачальнаяПозиция>, <Длина>)
ฟังก์ชันสตริงย่อย <Строки> สตริงย่อย( <НачальнаяПозиция> อะนาล็อกของฟังก์ชัน Environment() จากโมเดลออบเจ็กต์ สามารถใช้ฟังก์ชัน Substring() กับข้อมูลสตริงและอนุญาตให้คุณเลือกส่วนย่อยได้ <Длина> เริ่มต้นด้วยหมายเลขตัวอักษร <Строка> (อักขระในบรรทัดจะมีหมายเลขเริ่มต้นจาก 1) และความยาว <Длина> ไม่เป็นค่าคงที่หรือมากกว่า 1024
หากความยาวของสตริงน้อยกว่าที่ระบุในพารามิเตอร์ตัวที่สอง ฟังก์ชันจะส่งกลับสตริงว่าง
ความสนใจ!ไม่แนะนำให้ใช้ฟังก์ชัน SUBSTRING() เพื่อแปลงสตริงที่มีความยาวไม่จำกัดเป็นสตริงที่มีความยาวจำกัด ควรใช้ตัวดำเนินการคาสต์ EXPRESS() แทน
ฟังก์ชั่นที่คล้ายกัน
หากเราต้องการให้แน่ใจว่าแอตทริบิวต์สตริงตรงตามเกณฑ์ที่กำหนด เราจะเปรียบเทียบ:
เลือกคู่สัญญา ตั้งชื่อ AS คอลัมน์ 1 จาก ไดเรกทอรี AS คู่สัญญา โดยที่ ชื่อคู่สัญญา = "Gazprom"
แต่ถ้าคุณต้องการการเปรียบเทียบที่ละเอียดกว่านี้ล่ะ? ไม่ใช่แค่ความเสมอภาคหรือความไม่เท่าเทียมกันเท่านั้น แต่ยังมีความคล้ายคลึงกับรูปแบบบางอย่างด้วย? นี่คือสิ่งที่ฟังก์ชัน SIMILAR ถูกสร้างขึ้นมาเพื่อสิ่งนี้
LIKE - ตัวดำเนินการสำหรับตรวจสอบสตริงเพื่อความคล้ายคลึงกับรูปแบบ อะนาล็อกของ LIKE ใน SQL
ตัวดำเนินการ SIMILAR ช่วยให้คุณสามารถเปรียบเทียบค่าของนิพจน์ที่ระบุทางด้านซ้ายกับสตริงรูปแบบที่ระบุทางด้านขวา ค่าของนิพจน์ต้องเป็นประเภทสตริง หากค่าของนิพจน์ตรงกับรูปแบบ ผลลัพธ์ของตัวดำเนินการจะเป็น TRUE มิฉะนั้นจะเป็น FALSE
อักขระต่อไปนี้ในสตริงรูปแบบเป็นอักขระบริการและมีความหมายแตกต่างจากอักขระสตริง:
- % (เปอร์เซ็นต์): ลำดับที่มีอักขระตามจำนวนเท่าใดก็ได้
- _ (ขีดล่าง): อักขระหนึ่งตัว;
- […] (อักขระหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม): อักขระเดี่ยวใด ๆ ที่อยู่ในวงเล็บเหลี่ยม การแจงนับอาจมีช่วง เช่น a-z ซึ่งหมายถึงอักขระใดๆ ที่รวมอยู่ในช่วง รวมถึงจุดสิ้นสุดของช่วงด้วย
- [^...] (ในวงเล็บเหลี่ยม เครื่องหมายลบตามด้วยอักขระหนึ่งตัวขึ้นไป): อักขระเดี่ยวใดๆ นอกเหนือจากที่แสดงอยู่หลังเครื่องหมายปฏิเสธ
สัญลักษณ์อื่นใดหมายถึงตัวมันเองและไม่มีภาระเพิ่มเติมใดๆ หากจำเป็นต้องเขียนอักขระตัวใดตัวหนึ่งในรายการด้วยตัวมันเอง จะต้องนำหน้าด้วย<Спецсимвол>- ตัวฉันเอง<Спецсимвол>(อักขระที่เหมาะสมใดๆ) ถูกกำหนดไว้ในคำสั่งเดียวกันหลังคีย์เวิร์ด SPECIAL CHARACTER