منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] سؤال حول اقتطاع الجزء المختار - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] سؤال حول اقتطاع الجزء المختار (/showthread.php?tid=613)



سؤال حول اقتطاع الجزء المختار - سعود - 20-10-13

لو اردنا اخذ الجزئية التالية:
http://vb4arb.com/vb/images/twilight/logo.png

من النص التالي:

<img src="http://vb4arb.com/vb/images/twilight/logo.png
فماذا نستخدم


RE: سؤال حول اقتطاع الجزء المختار - sooriaty03 - 20-10-13

السلام عليكم ورحمة الله وبركاته

إذا كانت لديك جملة وتريد اقتطاع هذا الجزء فاستعمل الكود التالي:
كود :
Dim Link As String = "<img src=""http://vb4arb.com/vb/images/twilight/logo.png"
        Link = Link.Substring(Link.IndexOf("""") + 1)

أما إذا كانت هذه الجملة ناتجة عن عملية Regex
فاستعمل الكود التالي:

كود :
Dim Page As String = "<img src=""http://vb4arb.com/vb/images/twilight/logo.png"
        Dim Reg As New Regex(""".*")
        Dim Ma As Match = Reg.Match(Page)
        Dim Link As String = Page.Substring(Ma.Index + 1, Ma.Length - 1)

بمعنى أنك ستستعمل الأمرين

Ma.Index ووظيفته مؤشر لبداية النص المطلوب من الجملة
Ma.Length ووظيفته طول النص المطلوب


RE: سؤال حول اقتطاع الجزء المختار - kslawy - 20-10-13

بطريقة أخرى :

PHP كود :
Dim mch As Match Regex.Match("<img src=""http://vb4arb.com/vb/images/twilight/logo.jpg""http://vb4arb\.com/vb/images/twilight/logo\.(png|jpg|gif)"RegexOptions.IgnoreCase)
        If 
mch.Success Then
            MsgBox
(mch.Value)
        
End If 

طريقة أخرى لاستخراج أي رابط انظر للتعديل في الباترن :

PHP كود :
Dim mch As Match Regex.Match("<img src=""http://vb4arb.com/vb/images/twilight/logo.jpg""http:.*\.(png|jpg|gif)"RegexOptions.IgnoreCase



RE: سؤال حول اقتطاع الجزء المختار - سعود - 20-10-13

اذا استخلصنا روابط بالمعيار التالي
(<img src=).*\.(png|gif|jpg|jpeg)
ينتج عنه نص كيف نتعامل معه لكي نحمل الصورة
لان فيه روابط كاملة وفيه فقط للمجلد الخاص بالصور

ممتاز الان تمت الفكرة بالنسبة للرابط الكامل للصورة لكن كيف مع الرابط الجزئي مثل

/images/anyimage.png



RE: سؤال حول اقتطاع الجزء المختار - sooriaty03 - 20-10-13

السلام عليكم ورحمة الله وبركاته

يجب التأكد بجملة شرطية
فإذا كان لا يبدأ بكلمة http
فإذن تضيف إليها
كود :
http://vb4arb.com/vb



RE: سؤال حول اقتطاع الجزء المختار - سعود - 20-10-13

طيب سؤال اخر
لو حبيت اخذ فقط اسم الملف يعني بعد اخر شرطة مائلة كيف؟؟


RE: سؤال حول اقتطاع الجزء المختار - kslawy - 20-10-13

السلام عليكم ورحمة الله وبركاته

PHP كود :
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        Dim mch 
As Match Regex.Match("<img src=""http://vb4arb.com/vb/images/twilight/logo.jpg""http:.*\.(png|jpg|gif)"RegexOptions.IgnoreCase)
        If 
mch.Success Then
            
'' MsgBox(mch.Value)
            
MsgBox(IO.Path.GetFileName(mch.Value))
        
End If
    
End Sub 

توجد طريقة أخرى وذلك بتقسيم النص حسب الشرطة المائلة ثم أخذ آخر جزء .


RE: سؤال حول اقتطاع الجزء المختار - سعود - 21-10-13

بارك الله فيك اخوي
لكن بعد استخلاص الرابط يعني رابط عادي مثل التالي:
"http://vb4arb.com/vb/images/twilight/logo.jpg
اتوقع انها سهلة

هل الكود التالي صحيح لو كان الرابط مستخلص وجاهز
كود :
Dim a As String = "http://vb4arb.com/vb/images/twilight/loaaaaaaaaaaaaago.jpg"
        MsgBox(IO.Path.GetFileName(a))
جربته وتمام بس ودي اتاكدSmile

استخدمته وبدا فعلا بالتحميل بالاسماء الحقيقية لكن بعد قليل
Illegal characters in path.

والرسالة هذي
An exception occurred during a WebClient request.
لما جربت الكود التالي
fn = piclink.Substring(piclink.LastIndexOf("/") + 1)


RE: سؤال حول اقتطاع الجزء المختار - سعود - 21-10-13

عرفت الاشكالية!!
حروف عربية باحدى الصور
اقصد اسم ملف الصورة بحروف عربيةSad


RE: سؤال حول اقتطاع الجزء المختار - sooriaty03 - 21-10-13

السلام عليكم ورحمة الله وبركاته

المشكلة في الأسماء العربية أنها تكون بترميز UTF-8 ولتحويله إلى الترميز الافتراضي
استعمل الكود التالي

كود :
Dim b() As Byte = (From C As Char In FileName.ToCharArray Select CByte(AscW(C))).ToArray
FileName = System.Text.Encoding.UTF8.GetString(b)