ورود

View Full Version : سوال: استفاده از تابع instr



shahabbasic
جمعه 30 دی 1390, 17:35 عصر
همونطور که میدونید تابع instr یک عبارت یا یک کلمه رو در یک رشته جستجو میکنه و به اولین کلمه که در اون رشته برسه شماره مربوط به کاراکترشو (که چندمی هست در رشته) بر میگردونه حالا من میخوام بهش بگم به اولین کلمه که در اون رشته بهش رسیدی مقدارشو برنگردون مثلا به پنجمی که رسیدی برگردون
باید چطوری بنویسم؟

just4froum
جمعه 30 دی 1390, 18:11 عصر
من منظورتو كامل نفهميدم ميشه يك مثال بزني.

shahabbasic
جمعه 30 دی 1390, 18:56 عصر
مثلا اینطوری:

b="salam"
a=instr(1,b,"a")

a الان مقدار 2 رو برمیگردونه من میخوام مقدار 4 رو برگردونه یعنی دومین a رو ملاک در نظر بگیره

just4froum
جمعه 30 دی 1390, 19:05 عصر
مي توني از اين دوتا استفاده كني :




m = "salam"
MsgBox InStr(InStr(1, m, "a") + 1, m, "a")
MsgBox InStrRev(m, "a")

kitcat_m18
جمعه 30 دی 1390, 19:08 عصر
سلام،

Dim First As Boolean
Dim A As Long

b = "salam"

A = InStr(1, b, "a")

If First = False Then
A = 0
A = InStr(1, b, "a")
End If


کد رو اصلاح کردم

Dim First As Boolean
Dim A As Long
Dim b As String

b = "salam"

A = InStr(1, b, "a")

Do While InStr(1, b, "a") <> 0
If First = False Then
A = InStr(A + 1, b, "a")
First = True
GoTo Khoro0j
End If
Loop

Khoro0j:
MsgBox A

shahabbasic
جمعه 30 دی 1390, 19:15 عصر
سلام،

Dim First As Boolean
Dim A As Long

b = "salam"

A = InStr(1, b, "a")

If First = False Then
A = 0
A = InStr(1, b, "a")
End If

این کد که بازم 2 رو برمیگردونه !

shahabbasic
جمعه 30 دی 1390, 19:16 عصر
مي توني از اين دوتا استفاده كني :



MsgBox InStr(InStr(1, m, "a") + 1, m, "a")
MsgBox InStrRev(m, "a")


ببخشید m کارش چیه؟

just4froum
جمعه 30 دی 1390, 19:21 عصر
بفرماييد :



Dim m As String
Dim a As Long
Dim shomare As Integer
Dim x As Long

m = "aaasaasasdsdwesaasdwsa"

shomare = 5

a = 1
For x = 1 To shomare

a = InStr(a + 1, m, "a")

Next x

MsgBox a

just4froum
جمعه 30 دی 1390, 19:50 عصر
ببخشید m کارش چیه؟

يادم رفت بزنم.

متغيري كه متن توش ذخيره شده.

الان درست كردم.

shahabbasic
جمعه 30 دی 1390, 19:59 عصر
بفرماييد :



Dim m As String
Dim a As Long
Dim shomare As Integer
Dim x As Long

m = "aaasaasasdsdwesaasdwsa"

shomare = 5

a = 1
For x = 2 To shomare

a = InStr(a + 1, m, "a")

Next x

MsgBox a


نه این کد درست نیست این هر دفعه داره به مقدار شروع یکی اضافه میکنه :متفکر:
شما منظورت از متغیر shomare , اینه که چندمین a ؟ یا چندمین کاراکتر ؟

just4froum
جمعه 30 دی 1390, 20:03 عصر
نه این کد درست نیست این هر دفعه داره به مقدار شروع یکی اضافه میکنه :متفکر:

نه عزيزم نگاه كن مثلا فرض ميكنيم مي خوايم دومين a رو توي salam كه خودت گفتي پيدا كنيم.
خب اوليش رو پيدا ميكنيم بعد ميگيم بعد از اين بگرد يعني اگر a اولي دومين حرف است از حرف سوم بگرد a دومي رو پيدا كن.

شما كدو امتحان كن ببين ايراد داره يا نه

البته اين جاي كدو اصلاح كن
For x = 1 To shomare

موفق باشيد

kitcat_m18
جمعه 30 دی 1390, 20:26 عصر
کد پست قبلیم رو اصلاح کردم:

Dim First As Boolean
Dim A As Long
Dim b As String

b = "salam"

A = InStr(1, b, "a")

Do While InStr(1, b, "a") <> 0
If First = False Then
A = InStr(A + 1, b, "a")
First = True
GoTo Khoro0j
End If
Loop

Khoro0j:
MsgBox A

موفق باشید :لبخندساده:

shahabbasic
جمعه 30 دی 1390, 20:50 عصر
نه عزيزم نگاه كن مثلا فرض ميكنيم مي خوايم دومين a رو توي salam كه خودت گفتي پيدا كنيم.
خب اوليش رو پيدا ميكنيم بعد ميگيم بعد از اين بگرد يعني اگر a اولي دومين حرف است از حرف سوم بگرد a دومي رو پيدا كن.

شما كدو امتحان كن ببين ايراد داره يا نه

البته اين جاي كدو اصلاح كن
For x = 1 To shomare

موفق باشيد
خب خودم این فکر رو کردم که نقطه شروع رو از a قبلی بگیرم به این شکل :

b="salam"
y=2
F=4
for i=1 to y
a=instr(s,b,"a")
if a<> f then s=a
next i

sr2m72
جمعه 30 دی 1390, 23:37 عصر
Private Sub Command1_Click()
x = "salam"
a = InStr(1, x, "a")
b = InStr(a + 1, x, "a")
Print b
End Sub