ฟังก์ชั่นใหม่สำหรับการทำงานกับสตริง ฟังก์ชั่นใหม่สำหรับการทำงานกับฟังก์ชั่นสตริง 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