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
ภายในตัวฟังก์ชัน
แต่จะเป็นการลบข้อความย่อยนั้นๆ
ออกแทน แต่หลักการทำงานจะคล้ายๆ
กันดังนี้
- ใช้คำสั่ง InStr() หาตำแหน่งเริ่มต้นของข้อความย่อยที่จะถูกลบ
- จากนั้นจะนำส่วนของข้อความ ที่อยู่ก่อนจุดที่จะถูกลบ ไปเก็บไว้ในตัวแปร sResult ด้วยคำสั่ง Mid()
- จากนั้นจะทำการหาตำแหน่งเริ่มต้นใหม่ (lStartPos) ด้วยการนำตำแหน่งปัจจุบันรวมกับขนาดของข้อความที่ใช้ค้น (sSearch)
- ดำเนินการตั้งแต่ข้อ 1. ซ้ำจนกว่าจะไม่พบส่วนข้อความที่ตรงกับข้อความที่เก็บ sSearch อีก
- กรณีที่ไม่พบส่วนข้อความที่ตรงกับ sSearch จะนำข้อความที่ระบุใน sSource ตั้งแต่ตำแหน่งที่ระบุในตัวแปร sStartPos ไปจนจบข้อความมาต่อท้ายข้อความที่เก็บใน sResult ด้วยคำสั่ง Mid() เช่นเดียวกัน
- ในตัวอย่างที่ 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
|
เวลา
|
เหตุการณ์
|
||
06:00 น. | ตื่นนอน อ่านวารสารไมโครคอมพิวเตอร์ | ||
07:00 น. |
|
||
07:30 น. |
งานของกิจกรรมอาชีพ
กสิกรรมธรรมชาติ บ้านแม่ทำ
สีทา (3/2557):ตัดหญ้าเตรียมพื้นที่ปลูกข้าวโพดข้าวเหนียว
|
||
09:15 น. |
|
||
09:30 น. | ทำบันทึกประจำวันของวันก่อน ทำบัญชีครัวเรือน | ||
10:00 น. |
งานของกิจกรรมอาชีพ
งานอินเตอร์เน็ต
(18/2557) : ทำต้นฉบับบทความเรื่องใหม่
เชื่อมต่ออินเตอร์เน็ต
โพสต์บทความเรื่องใหม่
|
||
13:15 น. |
|
||
15:00 น. | ลองซ่อมมอเตอร์ไฟฟ้าฟ้ากระแสตรง แต่ไม่สำเร็จ | ||
15:00 น. | กวาดพื้นใต้ถุนบ้าน | ||
16:00 น. |
งานของกิจกรรมอาชีพ
งานการตลาดและการลงทุน
(20/2557) : ออกไปหาลูกค้า,
แวะไร่แตงโมที่ทับกระดาษ,
แวะบ้านเถ้าแก่ตั๊กที่ทับกระดาษ,
ไปบ้านสายหยุด,
ขากลับแวะบ้านเถ่าแก่ตั๊กอีกครั้งหนึ่ง,
แวะบ้านพี่ใจ,
แวะซื้อกับข้างร้านยันต์หน้าโรงเรียนด่านช้างวิทยา,
กลับถึงบ้าน
|
||
19:00 น. |
|
||
21:00 น. | เข้านอน |