دریافت مقادیر یک رشته که میان 2 رشته دیگر - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

دریافت مقادیر یک رشته که میان 2 رشته دیگر

+1 امتیاز
سلام من دارم یه برنامه می نویسم که اما توی قسمت دریافت رشته گیر کردم! مثلا قراره کلمه milad میان دوتا بک اسلش (\) قرار بگیره و من فقط بخوام میلاد را استخراج کنم کسی می دونه که چجوری توی ویژال بسیک 10 این کارو انجام بدم؟

*من نمی دونم چقدر رشته کاربر وارد کرد مثلا ممکنه که 120 کاراکتر وارد کنه... و اینکه قبل و بعد بک اسلش ها هم قراره که کاراکتر ها دیگه هم باشه... بنظرم باید با Instr اینکار کنم درسته؟ باید چجوری اینکارو کنم؟؟

می دونید توی هنگام ورود اطلاعات بدونه اینکه کاربر بفهمه به اوّل و آخرش بک اسلش وارد کنم؟؟

ممنون و تشکّر فراوان از کاربران و مدیر سایت عزیز ♥
سوال شده اردیبهشت 21, 1393  بوسیله ی tootro20 (امتیاز 15)   3 3
ویرایش شده اردیبهشت 21, 1393 بوسیله ی tootro20

2 پاسخ

0 امتیاز
اول با indexof اندیس \ اول رو برگردون و در آی بریز بعد با همون indexof اما از i+1 شروع میشه اندیس بک اسلش دوم رو برگردون بعد دیگه با midstr یا instr و ... کاراکترهای بین ایندوتا رو برگردون

به همین آسونی

وقت کد زدن نداشتم
پاسخ داده شده اردیبهشت 21, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
+1 امتیاز

به دو روش ميتونی جدا سازی رو انجام بدی تابع Split ، يا تابع Instr و Mid

جدا سازی توسط تابع Split :

        Dim DATA As String = "bsnasdcccvfdv\milad\yhbosssssdvdfbyrty"
        Dim Ret As String = Split(Split(DATA, "\")(1), "\")(0)
        Debug.Print(Ret)

 

جدا سازی توسط تابع Instr + Mid :

 

        Dim DATA As String = "bsnasdcccvfdv\milad\yhbosssssdvdfbyrty"

        Dim intStart As Integer
        Dim intEnd As Integer
        Dim Ret As String = Nothing
        Dim targetLen As Integer

        intStart = InStr(DATA, "\") + 1
        If intStart > 1 Then
            intEnd = InStr(intStart, DATA, "\")
            If intEnd > 0 Then
                targetLen = (intEnd - intStart)
                Ret = Mid(DATA, intStart, targetLen)
            End If
        End If
        Debug.Print(Ret)
 
تو روش Split بهتره قبل از جدا سازی با Instr چک کنيد که کراکتر اسلش وجود داره يا نه بعد اقدام به جداسازی کنيد چون در صورت نبودن کراکتر جدا ساز برنامه با خطا مواجع ميشه

 

پاسخ داده شده اردیبهشت 21, 1393 بوسیله ی Sami (امتیاز 178)   2 6 16
ویرایش شده اردیبهشت 21, 1393 بوسیله ی Sami
سلام ممنون ای هموطن عزیزم تشکّر خودمم یکی نوشتم اینه کدش:
result1 = InStr(1, "]]]]\Touraj\]]]]", "\", vbBinaryCompare)
Print InStr(1, "]]]]\Touraj\]]]]", "\", vbBinaryCompare)
result2 = InStr(result1 + 1, "]]]]\Touraj\]]]]", "\", vbBinaryCompare)
Print result2
Print Mid$("]]]]\Touraj\]]]]", result1 + 1, result2 - result1 - 1)
...