View Full Version : یافتن اولین عدد در یک رشته
  
علیرضا.ا
شنبه 19 مرداد 1392, 15:48 عصر
یه لینکی داریم مثلا به این صورت
x.com/post/1
یا اینجوری
x.com/post/1/vb
چجوری میتونیم اولین عدد که 1 هست رو پیدا کنم؟(عدد ممکنه  یک,دو یا سه رقمی باشه
mehran901
شنبه 19 مرداد 1392, 16:10 عصر
خب کاری نداره که، عدد شما همیشه بعد از post/ و قبل از /vb اومده ، با تابع instr مختصات هر دو عبارت رو بدست بیار ، و بعدش با mid قسمت بینش رو جدا کن
بیا این کدش : 
Option Explicit
Private Const tst As String = "1234asdahj/post/82345/vb"
Private Sub Form_Load()
Dim i%
i = InStr(1, tst, "post/", vbTextCompare) + 5
MsgBox Mid$(tst, i, (InStr(i, tst, "/vb", vbTextCompare) - i))
End Sub
علیرضا.ا
شنبه 19 مرداد 1392, 16:32 عصر
ممنون ولی یه مشکلی هس
اون کلمه ی vb متغیره و ممکنه یه چیز دیگه باشه....
miladatashin
شنبه 19 مرداد 1392, 17:36 عصر
یه لینکی داریم مثلا به این صورت
x.com/post/1
یا اینجوری
x.com/post/1/vb
چجوری میتونیم اولین عدد که 1 هست رو پیدا کنم؟(عدد ممکنه  یک,دو یا سه رقمی باشه
 
منظورتون این هست که عدد همیشه با 1 شروع میشه؟( اولین عددی که با 1 شروع میشه)
علیرضا.ا
شنبه 19 مرداد 1392, 17:41 عصر
نه این عدد هر چیزی میتونه باشه ـ شماره پست هست
miladatashin
شنبه 19 مرداد 1392, 17:45 عصر
نه این عدد هر چیزی میتونه باشه-شمارهی پست هست-
Text2.Text = CStr(Val(Mid(Text1, InStr(Text1, "post/") + 5, 4)))
اینطوری میتونید.
در ضمن فرقی نمیکنه عدد 1 یا 2 یا 3 یا 4 رقمی باشه. به خاطر وجود val کارکترهای اضافی حذف میشه
miladatashin
شنبه 19 مرداد 1392, 17:54 عصر
البته کد  mehran901 عزیز هم مشکلی نداره و شما اگه به جای "/vb" در خط آخر "/" بگذارید مشکلی که گفتین حل میشه
Mr'Jamshidy
شنبه 19 مرداد 1392, 20:27 عصر
ببین این چطوره؟
هر چند تا عدد تو متن باشه برات در میاره و به ترتیب میریزه تو یک آرایه
مثلا:
'کد:
    tmpp = GetNumbers("A123B465C789D")
'نتیجه:
'tmpp(0) = 123
'tmpp(1) = 465
'tmpp(2) = 789
Private Sub Form_Load()
    Dim tmpp() As String
    tmpp = GetNumbers("x.com/post/1")
    For i = LBound(tmpp) To UBound(tmpp)
        MsgBox tmpp(i)
    Next
    
    Erase tmpp
    
    tmpp = GetNumbers("x.com/post/1/vb")
    For i = LBound(tmpp) To UBound(tmpp)
        MsgBox tmpp(i)
    Next
    
    Erase tmpp
End Sub
Function GetNumbers(ByVal Data As String) As String()
    Dim tmp As String
    
    For i = 1 To Len(Data)
        If IsNumeric(Mid(Data, i, 1)) Then
            tmp = tmp & Mid(Data, i, 1)
        Else
            If Not Right(tmp, 1) = "|" Then tmp = tmp & "|"
        End If
    Next
    
    If Right$(tmp, 1) = "|" Then tmp = Left$(tmp, Len(tmp) - 1)
    If Left$(tmp, 1) = "|" Then tmp = Right$(tmp, Len(tmp) - 1)
    
    GetNumbers = Split(tmp, "|")
End Function
علیرضا.ا
شنبه 19 مرداد 1392, 20:55 عصر
از همگی ممنون:قلب:
فکر کنم کد دومی برای کار من مناسبتر باشه...
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.