
نوشته شده توسط
mazoolagh
سلام و روز شما هم خوش!
لطفا در مورد فانکشن زیر که برای این مورد ایجاد کرده ام اظهار نظر فرمائین !
Public Function RegExCountWords(ByVal Text As String, PatternText As String) As Long
Dim regx
Set regx = CreateObject("VBScript.RegExp")
regx.Pattern = PatternText
regx.Global = True
RegExCountWords = regx.Execute(Text).Count
End Function
در مثال زیر با استفاده از تابع فوق میتوان تعداد کاراکتر o در رشته ورودی رو بدست آورد .
MsgBox RegExCountWords("www.bahrami125@yahoo.com", "o")
یا در مثال زیر تعداد کلمه در در رشته ورودی که فارسی هم هست بدست میاد:
MsgBox RegExCountWords("در مثال زير با استفاده از تابع فوق ميتوان تعداد کاراکتر o در رشته ورودي رو بدست آورد .", "در")
فکر کنم در متن های چند خطی رشته فارسی هم کاربرد داشته باشه .
البته در متن انگلیسی برای بدست آوردن تعداد یک کاراکتر یا کلمه خاص در یک متن میتونیم با ترکیب تابع Len و Replace اینکار رو انجام بدهیم
مثلاً در همون مثال اولی میخواهم تعداد حرف o رو در متن www.bahrami125@yahoo.com ورودی بدست بیاریم. برای اینکار تابع رو بصورت زیر مینویسیم :
CountWords = Len("www.bahrami125@yahoo.com") - Len(Replace("www.bahrami125@yahoo.com", "o", ""))
ولی با این کد تعداد در متون فارسی درست بدست نمیاد ولی تابعی که در اون از پترن استفاده شده برای بدست آوردن تعداد در هر دو حالت فارسی و انگلیسی مناسبتره