ورود

View Full Version : تبدیل حروف بزرگ به کوچک توسط عبارات منظم



aleas2
سه شنبه 01 آذر 1390, 00:05 صبح
سلام خسته نباشید بنده تو برنامه یه تکست دارم text1 داخلش سورس یه صفحه وب هسته حالا میخوام با عبارات منظم کد نویسی که بین <> هسته که تو عبارات منظم میشه

"<(.*?)>"
خب میخوام اینو پیدا کنه توسط تابع lcase به حروف کوچک تبدیل کنه چطور باید اینکارو بکنم؟کلا بگرده هر چی <> دید کد وسط <> رو به حروف کوچک تبدیل کنه

بطور مثال ما داخل تکست این کد رو داریم


با آغاز اعتراضات در ليبي، بناگاه پرده از چهره قذافي‌ها برداشته شد و همه هيولاي درون آنها را ديدند.سيف‌الاسلام حتي جلوتر از پدر جلوي مردم ايستاد
WWW.WEB.COM
www.web.com
<DIV style="tExt-aligN: center"><Br></DIV>
وي بر خلاف پدر که هميشه با لباس قبيله‌اي در محافل حاضر مي‌شد، همواره کت و شلوار مي‌پوشد
<HR>
<BR>

و قتی رو command کلیک میکنی به این شکل بشه


با آغاز اعتراضات در ليبي، بناگاه پرده از چهره قذافي‌ها برداشته شد و همه هيولاي درون آنها را ديدند.سيف‌الاسلام حتي جلوتر از پدر جلوي مردم ايستاد
WWW.WEB.COM
www.web.com
<div style="text-align: center"><br></div>
وي بر خلاف پدر که هميشه با لباس قبيله‌اي در محافل حاضر مي‌شد، همواره کت و شلوار مي‌پوشد
<hr>
<br>



البته خودم به این طریق کد نویسی میتونم اینکارو بکنم ولی میخوام با عبارات منظم اینکارو انجام بدم که هم یاد بگیرم هم شنیدم با عبارات منظم بهینه تر هسته


Private Sub Command1_Click()
Dim i, j As Integer
i = InStr(1, Text1.Text, "<")
Do While i <> 0
j = InStr(i, Text1.Text, ">") + 1
Text1.Text = Replace(Text1.Text, Mid(Text1.Text, i, j - i), LCase(Mid(Text1.Text, i, j - i)))
i = InStr(j, Text1.Text, "<")
Loop
End Sub

_behnam_
سه شنبه 01 آذر 1390, 08:24 صبح
اینجوری میشه !

Private Sub Command1_Click()
Dim Mach As Match
Dim Machs As MatchCollection
Dim Reg As New RegExp
Reg.IgnoreCase = True
Reg.MultiLine = True
Reg.Global = True
Reg.Pattern = "<(.*?)>"
Set Machs = Reg.Execute(Text1.Text)

For Each Mach In Machs
Text1.Text = Replace(Text1.Text, Mach.Value, LCase(Mach.Value))
Next
End Sub

aleas2
سه شنبه 01 آذر 1390, 08:45 صبح
ببخشید به نظر شما با کد نویسی عبارات باقاعده که شما کدشو گذاشتین بهتره یا اونی خودم کدشو گذاشتم؟
و اینکه میشه یه توضیح مختصر درمورد هر خط از کدنویسی که گذاشتین بدین یعنی هر خط مثلا چکار میکنه؟یه توضیح مختصر

_behnam_
سه شنبه 01 آذر 1390, 15:37 عصر
من 2تا کد رو باهم مقایسه کردم دیدیم خیلی توی اجرا تفاوتی ندارن فقط تعداد حلقه ها توی عبارات باقائده کمتر میشه !
بررسی کدها



Dim Mach As Match
Dim Machs As MatchCollection
Dim Reg As New RegExp
Reg.IgnoreCase = True
Reg.MultiLine = True
Reg.Global = True
Reg.Pattern = "<(.*?)>"
Set Machs = Reg.Execute(Text1.Text)


نا این جا که خودتون میدونید چی شد چونکه گویا با عبارات منظم کار کردید قبلا

For Each Mach In Machs
Text1.Text = Replace(Text1.Text, Mach.Value, LCase(Mach.Value))
Next


این هم که یه حلقه ساخته شده به تعداد تگها که میاد با تابع Replace تگهای گوچک رو جایگزین تگهای بزگ میکنه





موفق باشید

aleas2
سه شنبه 01 آذر 1390, 16:04 عصر
ممنون اگر ممکنه کار این سه تا کد هم بگین
Reg.Global = True
Reg.IgnoreCase = True
و این چجور حلقه ای هسته؟متوجه نشدم چطور تشخیص میده تگ جدیدی هسته؟
For Each Mach In Machs
و اینکه جای این حلقه از حلقه دگه ای هم میشه استفاده کرد یه نمونه بذارین ممنون

aleas2
سه شنبه 01 آذر 1390, 17:24 عصر
ببخشید یادم رفت اگر بخوام از For Each Mach In Machs استفاده نکنم اولین تگ که بین <> هسته بریزه تو تکست2 چطور باید اینکارو بکنم یا اینکه دومین کدی که بین <> هسته بریزه تو تکست3 چطور باید اینکارو بکنم؟
و اینکه بفهمم کلا چندتا <> هسته؟



جواب سوال
این پست ویرایش کردم چون خودم به جوابم رسیدم اینجا میزارم که شاید به کسی دگه کمک کرد
با این کد میفهمیم چند تا <> وجود داره

i = Machs.Count
با این کد اولین <> میریزیم داخل متغییر a

a = Machs.Item(0)
با این کد دومین<> میریزیم داخل متغییر a

a = Machs.Item(1)


فقط یه نفر جواب سوال تیکت بالا رو بده ممنون