MyBanner

โฆษณา

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

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



6.3.3 การค้นหาและลบข้อความ

        เช่นเดียวกับการค้นหาและแทนที่ข้อความด้วยภาษา OpenOffice / LibreOffice Basic การค้นหาเพื่อลบคำหรือข้อความย่อยๆ ออกจากข้อความหลัก เป็นงานทีเราต้องสร้างขึ้นเองเช่นเดียวกัน และจากฟังก์ชัน SearchReplace เราสามารถที่จะนำมาประยุกต์สร้างเป็นฟังก์ชัน ที่ทำหน้าที่ลบข้อความย่อยที่ไม่ต้องการออกจากข้อความหลักได้ เนื่องจากใช้หลักการเดียวกัน ซึ่งจะได้เป็นฟังก์ชัน RemoveFormString ดังในต้นฉบับโปรแกรมชุดที่ 6-02

ต้นฉบับโปรแกรมชุดที่ 6-02 : คำสั่งในการค้นหาและลบข้อความ
FUNCTION RemoveFormString (sSource As String, sSearch 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) )

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

          ฟังก์ชัน RemoveFormString จะต่างจากฟังก์ชัน SearchReplace ตรงที่ไม่มีการนำข้อความย่อยใดๆ ไปแทนที่ด้วยข้อความที่ระบุอยู่ในตัวแปร sSearch ภายในตัวฟังก์ชัน แต่จะเป็นการลบข้อความย่อยนั้นๆ ออกแทน แต่หลักการทำงานจะคล้ายๆ กันดังนี้
  1. ใช้คำสั่ง InStr() หาตำแหน่งเริ่มต้นของข้อความย่อยที่จะถูกลบ
  2. จากนั้นจะนำส่วนของข้อความ ที่อยู่ก่อนจุดที่จะถูกลบ ไปเก็บไว้ในตัวแปร sResult ด้วยคำสั่ง Mid()
  3. จากนั้นจะทำการหาตำแหน่งเริ่มต้นใหม่ (lStartPos) ด้วยการนำตำแหน่งปัจจุบันรวมกับขนาดของข้อความที่ใช้ค้น (sSearch)
  4. ดำเนินการตั้งแต่ข้อ 1. ซ้ำจนกว่าจะไม่พบส่วนข้อความที่ตรงกับข้อความที่เก็บ sSearch อีก
  5. กรณีที่ไม่พบส่วนข้อความที่ตรงกับ sSearch จะนำข้อความที่ระบุใน sSource ตั้งแต่ตำแหน่งที่ระบุในตัวแปร sStartPos ไปจนจบข้อความมาต่อท้ายข้อความที่เก็บใน sResult ด้วยคำสั่ง Mid() เช่นเดียวกัน
  6. ในตัวอย่างที่ 6-05 เป็นตัวอย่างการนำฟังก์ชัน RemoveFormString มาใช้งาน ซึ่งในตัวอย่างเป็นการบนข้อความ “ test ” ออกจากข้อความหลัก

ตัวอย่างที่ 6-05 : ตัวอย่างการใช้ฟังก์ชัน RemoveFormString
SUB subExample06_05
         Dim sTestStr As String
         Dim sDisplay As String

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

          'ค้นหาและลบข้อความด้วยคำสั่ง RemoveFormString
          sTestStr = RemoveFormString( sTestStr, " test ")

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

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

เทรด forex กับ exness.com

บันทึกประจำวันที่ 30 มิถุนายน พ.. 2557 (2014)
เวลา
เหตุการณ์
06:00 . ตื่นนอน อ่านวารสารไมโครคอมพิวเตอร์
07:00 .
0.กินข้าวเช้า 1.กับข้าว:ต้มยำหัวปลีปลาช่อน, ไข่เจียว, น้ำพริก, สะตอสด
07:30 .
งานของกิจกรรมอาชีพ กสิกรรมธรรมชาติ บ้านแม่ทำ สีทา (3/2557):ตัดหญ้าเตรียมพื้นที่ปลูกข้าวโพดข้าวเหนียว
09:15 .
0.สูบน้ำใช้ด้วยปั้มชักพลังงานโซลาร์เซลล์ 1.อาบน้ำ
09:30 . ทำบันทึกประจำวันของวันก่อน ทำบัญชีครัวเรือน
10:00 .
งานของกิจกรรมอาชีพ งานอินเตอร์เน็ต (18/2557) : ทำต้นฉบับบทความเรื่องใหม่ เชื่อมต่ออินเตอร์เน็ต โพสต์บทความเรื่องใหม่
13:15 .
0.กินข้าว พักผ่อน
1.กับข้าว:ต้มยำหัวปลีปลาช่อน, ไข่เจียว, น้ำพริก, สะตอสด, ข้าวโพดทอด
15:00 . ลองซ่อมมอเตอร์ไฟฟ้าฟ้ากระแสตรง แต่ไม่สำเร็จ
15:00 . กวาดพื้นใต้ถุนบ้าน
16:00 .
งานของกิจกรรมอาชีพ งานการตลาดและการลงทุน (20/2557) : ออกไปหาลูกค้า, แวะไร่แตงโมที่ทับกระดาษ, แวะบ้านเถ้าแก่ตั๊กที่ทับกระดาษ, ไปบ้านสายหยุด, ขากลับแวะบ้านเถ่าแก่ตั๊กอีกครั้งหนึ่ง, แวะบ้านพี่ใจ, แวะซื้อกับข้างร้านยันต์หน้าโรงเรียนด่านช้างวิทยา, กลับถึงบ้าน
19:00 .
0.อาบน้ำ กินข้าว ดูหนังจากแผ่นดีวีดีเช่า พักผ่อน 1.กับข้าว : ต้มยำหัวปลีปลาช่อน, ใส้กรอกทอด, ข้าวโพดทอด
21:00 . เข้านอน


Adz2you.