PDA

View Full Version : یافتن اولین عدد در یک رشته



علیرضا.ا
شنبه 19 مرداد 1392, 14:48 عصر
یه لینکی داریم مثلا به این صورت
x.com/post/1
یا اینجوری
x.com/post/1/vb
چجوری میتونیم اولین عدد که 1 هست رو پیدا کنم؟(عدد ممکنه یک,دو یا سه رقمی باشه

mehran901
شنبه 19 مرداد 1392, 15: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, 15:32 عصر
ممنون ولی یه مشکلی هس
اون کلمه ی vb متغیره و ممکنه یه چیز دیگه باشه....

miladatashin
شنبه 19 مرداد 1392, 16:36 عصر
یه لینکی داریم مثلا به این صورت
x.com/post/1
یا اینجوری
x.com/post/1/vb
چجوری میتونیم اولین عدد که 1 هست رو پیدا کنم؟(عدد ممکنه یک,دو یا سه رقمی باشه

منظورتون این هست که عدد همیشه با 1 شروع میشه؟( اولین عددی که با 1 شروع میشه)

علیرضا.ا
شنبه 19 مرداد 1392, 16:41 عصر
نه این عدد هر چیزی میتونه باشه ـ شماره پست هست

miladatashin
شنبه 19 مرداد 1392, 16:45 عصر
نه این عدد هر چیزی میتونه باشه-شمارهی پست هست-

Text2.Text = CStr(Val(Mid(Text1, InStr(Text1, "post/") + 5, 4)))

اینطوری میتونید.
در ضمن فرقی نمیکنه عدد 1 یا 2 یا 3 یا 4 رقمی باشه. به خاطر وجود val کارکترهای اضافی حذف میشه

miladatashin
شنبه 19 مرداد 1392, 16:54 عصر
البته کد mehran901 عزیز هم مشکلی نداره و شما اگه به جای "/vb" در خط آخر "/" بگذارید مشکلی که گفتین حل میشه

Mr'Jamshidy
شنبه 19 مرداد 1392, 19: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, 19:55 عصر
از همگی ممنون:قلب:
فکر کنم کد دومی برای کار من مناسبتر باشه...