MyBanner

โฆษณา

วันจันทร์ที่ 25 สิงหาคม พ.ศ. 2557

การค้นหาและแทนที่ข้อความ :: บทที่ 6 การจัดการข้อความในภาษา OpenOffice / LibreOffice Basic



6.3.2 การค้นหาและแทนที่ข้อความ

6.3.2.1 การใช้คำสั่ง Mid()

        คำสั่ง Mid() ในภาษา OpenOffice / LibreOffice Basic มีคุณสมบัติที่น่าสนใจ คือ เราสามารถใช้ค้นหาและเปลี่ยนเนื้อหาให้เป็นข้อความตามที่กำหนดได้ (ค้นหาและแทนที่) โดยมีเงื่อนไขคือ เราต้องทราบตำแหน่งหรือจุดเริ่มต้น และขนาดของข้อความที่จะแทนที่ (เป็นค่าตัวเลข) ซึ่งรูปแบบชุดคำสั่งที่ใช้ มีดังนี้

รูปแบบชุดคำสั่ง :
Mid (MainStr As String, StartPosition As Long , Length As Long, ReplaceStr As String)
โดยที่
        MainStr       มายถึง ข้อความหลักขนาดไม่เกิน 65535 ตัวอักษร
        StartPostion หมายถึง จุดเริ่มต้นของข้อความที่จะเปลี่ยนเนื้อหา
        Length        หมายถึง จำนวนตัวอักษรที่จะถูกแทนที่ หรือความยาวของข้อความที่จะถูกนำไปแทนที่ข้อความชุดเดิม (หมายถึงความยาวของ ReplaceStr)
        ReplaceStr   หมายถึง ข้อความชุดใหม่ที่จะนำไปแทนที่

ตัวอย่างที่ 6-03 : การแทนที่ข้อความด้วยคำสั่ง Mid()
SUB subExample06_03
        Dim sTestStr As String
        Dim sDisplay As String

        sTestStr = "หลงแต่ความรู้สูงจึงจูงโลกสู่บรรลัยกัน"

        'ค้นหาแทนที่ด้วยคำสั่ง Mid()
        Mid(sTestStr, 29, 11, "ประลัยกัลป์")

        'เตรียมข้อความแสดงผล
        sDisplay = "sTestStr = ""หลงแต่ความรู้สูงจึงจูงโลกสู่บรรลัยกัน"""
        sDisplay = sDisplay + Chr(13) + Chr(13) + _
                          "เมื่อผ่านการทำงานของคำสั่ง" + Chr(13) + _
                          "Mid( sTestStr, 29, 11, ""ประลัยกัลป์"" )" + Chr(13) + _
                          "ข้อความในตัวแปร sTestStr จะกลายเป็น" + Chr(13) + _
                          Chr(13) + sTestStr

        MsgBox sDisplay
END SUB
รูปที่ 6-03 ผลการทำงานของซับรูทีน subExample06_03
6.3.2.2 การสร้างชุดคำสั่งค้นหาและแทนที่ข้อความขึ้นใช้เอง

ในภาษา OpenOffice / LibreOffice Basic จะไม่มีชุดคำสั่งที่ทำหน้าที่นำข้อความย่อย ไปเปรียบเทียบค้นหาและแทนที่ในข้อความหลักโดยตรงให้ใช้ แต่เราสามารถสร้างขึ้นใช้เองได้ โดยอาศัยคำสั่ง InStr() และคำสั่ง Mid() มาเป็นส่วนประกอบดังรายละเอียดในต้นฉบับโปรแกรมชุดที่ 6-01

ต้นฉบับโปรแกรมชุดที่ 6-01 : คำสั่งในการค้นหาและแทนที่ข้อความ
FUNCTION SearchReplace(sSource As String, sSearch As String, sNewPart As String)
         Dim sResult As String 'เก็บข้อความที่ถูกแทนที่แล้ว
         Dim lStartPos As Long 'ตำแหน่งเริ่มต้นค้นหาและแทนที่
         Dim lCurrentPos As Long 'ตำแหน่งตัวอักษรปัจจุบัน

         sResult = ""
        lStartPos = 1
        lCurrentPos = 1
        If (sSearch = "") Then 'ถ้าไม่มีข้อความที่จะค้นหาและแทนที่
               sResult = sSource 'ส่งข้อความหลักกลับ
        Else
               'ทำการค้นหาและแทนที่ข้อความย่อยที่พบทั้งหมด
               Do While (lCurrentPos <> 0)
                         'หาตำแหน่งเริ่มต้นของส่วนข้อความที่จะแทนที่
                         lCurrentPos = InStr(lStartPos, sSource, sSearch)
                         If (lCurrentPos <> 0) Then 'กรณีที่พบ
                                  'นำข้อความก่อนจุดที่พบไปเก็บใน sResult
                                  sResult = sResult + _
                                  Mid(sSource, lStartPos, (lCurrentPos - lStartPos) )

                                  'นำข้อความที่จะแทนที่มาต่อท้าย sResult
                                  sResult = sResult + sNewPart

                                  'หาจุดเริ่มต้นที่จะค้นหาต่อไป
                                  lStartPos = lCurrentPos + Len(sSearch)
                          Else
                                   'กรณีที่หาไม่พบอีกแล้วจะนำข้อความที่เหลือ
                                   'ต่อท้าย sResult
                                   sResult = sResult + _
                                                    Mid(sSource, lStartPos, Len(sSource))
                          End If
                 Loop
        End If
        'ส่งข้อความใหม่ที่ได้ซึ่งเก็บใน sResult กลับ
        SearchReplace = sResult
END FUNCTION

วิธีการทำงานของฟังก์ชัน SearchReplace ในข้างต้น เป็นการค้นหาและแทนที่ข้อความที่ต้องการที่อยู่ในข้อความหลัก (sSource) โดยมีหลักการทำงานดังนี้
  1. ใช้คำสั่ง InStr() หาตำแหน่งเริ่มต้นของจุดที่จะแทนที่ข้อความ
  2. จากนั้นจะนำส่วนของข้อความที่อยู่ก่อนจุดที่จะแทนที่ ไปเก็บไว้ในตัวแปร sResult ด้วยคำสั่ง Mid() (แยกส่วนข้อความ)
  3. นำข้อความย่อยที่จะแทนที่ ที่เก็บในตัวแปร sNewPart มาต่อท้ายข้อความที่เก็บอยู่ใน sResult ที่ได้จากข้อ 2.
  4. จากนั้นจะทำการหาตำแหน่งเริ่มต้นใหม่ (lStartPos) ด้วยการนำตำแหน่งปัจจุบัน รวมกับขนาดของข้อความที่ใช้ค้น (sSearch)
  5. ดำเนินการตั้งแต่ข้อ 1. ซ้ำจนกว่าจะไม่พบส่วนข้อความที่ตรงกับข้อความที่เก็บ sSearch อีก
  6. กรณีที่ไม่พบส่วนข้อความที่ตรงกับ sSearch จะนำข้อความที่ระบุใน sSource ตั้งแต่ตำแหน่งที่ระบุในตัวแปร sStartPos ไปจนจบข้อความมาต่อท้ายข้อความที่เก็บใน sResult ด้วยคำสั่ง Mid() เช่นเดียวกัน
หมายเหตุ
ข้อความที่ใช้กับฟังก์ชัน SearchReplace จะต้องมีขนาดไม่เกิน 65535 ตัวอักษร

ในตัวอย่างที่ 6-04 เป็นตัวอย่างของการนำฟังก์ชัน SearchReplace ที่สร้างขึ้นในข้างต้นมาใช้งาน

ตัวอย่างที่ 6-04 : การค้นหาและแทนที่ข้อความด้วยฟังก์ชัน SearchReplace
SUB subExample06_04
         Dim sTestStr As String
         Dim sDisplay As String

         sTestStr = "หลงแต่ความรู้สูงจึงจูงโลกสู่บรรลัยกัน" + _
                           Chr(13) + "เพราะไม่สร้างคุณธรรมให้ตน"

         'ค้นหาแทนที่ด้วยคำสั่ง SearchReplace
         sTestStr = SearchReplace( sTestStr, "บรรลัยกัน", "ประลัยกัลป์")

         'เตรียมข้อความแสดงผล
        sDisplay = "sTestStr = ""หลงแต่ความรู้สูงจึงจูงโลกสู่บรรลัยกัน""" + _
                         Chr(13) + " ""เพราะไม่สร้างคุณธรรมให้ตน"""
        sDisplay = sDisplay + Chr(13) + Chr(13) + _
                           "เมื่อผ่านการทำงานของคำสั่ง" + Chr(13) + _
                           "sTestStr = SearchReplace( sTestStr, " +_
                           """บรรลัยกัน"", ""ประลัยกัลป์"")" + _
                           Chr(13) + "ข้อความในตัวแปร sTestStr จะกลายเป็น" + _
                           Chr(13) + Chr(13) + sTestStr

         MsgBox sDisplay
END SUB
รูปที่ 6-04 ผลการทำงานของซับรูทีน subExample06_04

เทรด forex กับ exness

บันทึกประจำวันที่ 29 มิถุนายน พ.. 2557 (2014)
เวลา
เหตุการณ์
06:00 . ตื่นนอน ออกแบบหน้าร้านค้าสำหรับเปิดบนเครือข่ายอินเตอร์เน็ต
06:45 .
งานของกิจกรรมอาชีพ กสิกรรมธรรมชาติ บ้านแม่ทำ สีทา (3/2557) : ตัดหญ้าเตรียมพื้นที่ปลูกข้าวโพดข้าวเหนียว
09:15 .
0.สูบน้ำใช้ด้วยปั้มชักพลังงานโซลาร์เซลล์
1.อาบน้ำ กินข้าวเช้า ทำบันทึกประจำวันของวันก่อน
2.กับข้าว:แกงเต่าใบกันตงยอดหวาย, น้ำพริก, สะตอสด, ไข่เจียว
09:45 . งานของกิจกรรมอาชีพ งานอินเตอร์เน็ต (18/2557):ทำต้นฉบับบทความเรื่องใหม่ เชื่อมต่ออินเตอร์เน็ต ปรับแต่ง Affiliate Program และโพสต์บทความเรื่องใหม่
12:45 .
0.กินข้าว พักผ่อน
1.กับข้าว:แกงเต่าใบกันตงยอดหวาย, น้ำพริก, สะตอสด, ไข่เจียว
13:45 . ปรับแต่งปั้มชัก และสูบน้ำใช้ด้วยพลังงานจากแผงโซลาร์เซลล์
15:00 . งานของกิจกรรมอาชีพ งานการตลาดและการลงทุน (20/2557):ไปจัดกลุ่มเสนอสินค้า Yic nano ที่บ้านประดูเหลี่ยม, แวะเติมน้ำมันที่ปั้มหยอดเหรียญหน้าโรงเรียนนิคม 2, เติมเงินโทรศัพท์ที่หน้านิคม, ไปถึงหมู่บ้านประดู่เหลี่ยม, สำรวจหมู่บ้าน, จัดกลุ่มนำเสนอสินค้าที่บ้านพี่ประไพ, เสร็จงานเดินทางกลับ
20:15 .
0.อาบน้ำ กินข้าว พักผ่อน 1.กับข้าว:แกงเต่าใบกันตงหยอดหวาย, ต้มยำหัวปลีปลาช่อน, น้ำพริก, สะตอสด
21:00 . เข้านอน


Adz2you.