int wildcmp(const char *wild, const char *string) {
// Written by Jack Handy - jakkhandy@hotmail.com
const char *cp = NULL, *mp = NULL;
while ((*string) && (*wild != '*')) {
if ((*wild != *string) && (*wild != '?')) {
return 0;
}
wild++;
string++;
}
while (*string) {
if (*wild == '*') {
if (!*++wild) {
return 1;
}
mp = wild;
cp = string+1;
} else if ((*wild == *string) || (*wild == '?')) {
wild++;
string++;
} else {
wild = mp;
string = cp++;
}
}
while (*wild == '*') {
wild++;
}
return !*wild;
}لو سمحتوا ممكن احد يحولي هذه الدالة من ++C
تصدق أنا حاسس اني شايف طلاسم :lol: ,طب حتي قول ما هي وظيفة الداله يمكن نلاقي ليها بديل ,
أخي، لقد نسيت أن تذكر ماذا تفعل هذه الـ Function كما قال لك hazzoom، على الأقل ممكن أن نقوم بكتابة Function أخرى بالـ VB.Net تقوم بنفس الوظيفة، بدلاً من الترجمة...
تم تعديل هذه المشاركة بواسطة محمد عبد العليم في 26 يوليو 2005 في 16:31
رأس الحكمة الإيمان بالله
هذه الدالة تقوم بالتحقق اذا كان اسم الملف او المجلد يقع ضمن ماسك معين مثلا
if (wildcmp("bl?h.*", "blah.jpg")) {
//we have a match!
} else {
//no match =(
}وجدت كود اخر علي اانت يستخدم RegEx ولكن توجد مشكلة عندما يتضمن اسم الملف او المجلد فراغ مثلا
"New Folder"
او عندما يتضمن الاسم بعض الرموز مثل
"New Folder (1)"
وهذا هو الكود
Private Function WildStringToExpression(ByVal Text As String) As String
Dim NewString As String = Text
NewString = Replace(NewString, "*", "\w*")
NewString = Replace(NewString, "?", "\w?")
NewString = Replace(NewString, ".", "[.]{1}")
NewString = "^" & NewString & "$"
Return NewString
End Function
Private Function PatternMatches(ByVal StringToCheck As String, ByVal Pattern As String) As Boolean
If Regex.Match(StringToCheck, WildStringToExpression(Pattern), C).Success Then Return True
Return False
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Text = CStr(PatternMatches("TextDocument.txt", "*.txt")) ' هنا لا توجد مشكلة
Me.Text = CStr(PatternMatches("Text Document.txt", "*.txt")) '
هنا توجد مشكلة بسبب الفراغ الموجود في الاسم
End Subاعتقد انه لحل هذه المشكلة يجب عمل تغيير بسيط في Pattern ولكن للاسف لا اعرف كيف
ارجو من الاخوة الذين لديهم خبرة في RegEx المساعدة
جرب هذا الكود
Me.Text = TRIM(CStr(PatternMatches("Text Document.txt", "*.txt")))Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
شكرا اخ طارق
قصدت انه يوجد فراغ داخل النص نفسه وليس في بداية String او نهايتها
يعني "Text" تفصلها مسافة عن "Document" وهذا الذي يعمل المشكلة
وهذا الفراغ لا يمكن التخلص منه بدالة الTrim
لاحظ معي ايضا ان من كتب الدالة التي تستخدم RegEx يقوم باستبدال علامة النجمة مثلا بالتعبير
"\w*"
وعلي ذلك اظن ان حل المشكلة هو بنفس الطريقة اي استبدال الفراغ بتعبير معين
تم تعديل هذه المشاركة بواسطة H7SE في 27 يوليو 2005 في 11:42
اذا كان احد مهتم .. وجدت الحل ولكن للاسف بطريقة التجربة والخطأ ( :blink: :wacko: :lol: )
فقط اعمل كمنت لهذه الجملة
NewString = "^" & NewString & "$"
هذا الموضوع مغلق.