پاك كردن يك كاركتر يك نوع و متوالي در رشته ها

Amit13

Well-Known Member
سلام دوستان:rose:

من يك رشته داخل editbox ام دارم مثل زير :

کد:
                          ABL            Yes          I

حالا ميخوام هر كدام از كلمات ABL , Yes و I در يك رشته ي جدا قرار بگيره.

نظر خودم اينه كه ابتدا كاركتر هاي space اول رشته رو پاك كنم و وقتي به غير space رسيدم اونو با تابه strcopy وارد رشته ي جدا كنم.

از الگوريتم زير براي حذف space هاي ابتدايي استفاده كردم ولي يك error عجيب ميده.

کد:
l=LEN(EditBox$)
For i=1 To l
  s$=StrCopy(EditBox$,i,1)
  s=ORD(s$)
  If (s=32) Then
    EditBox$=StrDel(EditBox$,1,1)
  Else
    Message("EditBox$","s")
    Break()
  End
Next i

فقط دوتا از space ها رو پاك ميكنه:-? و break ميكنه
ممنون ميشم اگه راهمنايي كنيد.
 

پیوست ها

  • openBasic-01-01.rar
    618 بایت · بازدیدها: 7

the_king

مدیرکل انجمن
این کد رشته داخل EditBox رو به n رشته مجزا تقسیم می کنه (داخل متغیر n تعداد تکه ها مشخص میشه)
و تکه های در آرایه []$u قرار می گیرند، یعنی [1]$u تکه اول، [2]$u تکه دوم و ...

کد:
s$ = EditBox$
length = LEN(s$)
i = 1
For n = 1 To length
  u$[n] = ''
  If (i > length) Then
    n = n - 1
    Break()
  End
  For j = i To length + 1
    c$ = StrGet(s$,j)
    If (c$ = ' ' | c$ = '') Then
      If (i < j) Then
        Break()
      End
      i = j + 1
    End
  Next j
  If (j > i) Then
    k = j - i
    u$[n] = StrCopy(s$,i,k)
    i = j
  Else
    n = n - 1
    Break()
  End
Next n

مثلا بعد از اجرا کردن کد بالا اینطوری تکه ها رو نمایش می دهیم :
کد:
If (n > 0) Then
  For i = 1 To n
    s$ = 'u[' + CHAR(i) + '] = '+ CHR(39)+ u$[i] + CHR(39)
    Message("","s$")
  Next i
End

یا مثلا اینطوری داخل EditBox های دیگری نمایش اش می دهیم :
کد:
DisplayValue("EditBox1","u$[1]")
DisplayValue("EditBox2","u$[2]")
DisplayValue("EditBox3","u$[3]")
 
این کد رشته داخل EditBox رو به n رشته مجزا تقسیم می کنه (داخل متغیر n تعداد تکه ها مشخص میشه)
و تکه های در آرایه []$u قرار می گیرند، یعنی [1]$u تکه اول، [2]$u تکه دوم و ...

کد:
s$ = EditBox$
length = LEN(s$)
i = 1
For n = 1 To length
  u$[n] = ''
  If (i > length) Then
    n = n - 1
    Break()
  End
  For j = i To length + 1
    c$ = StrGet(s$,j)
    If (c$ = ' ' | c$ = '') Then
      If (i < j) Then
        Break()
      End
      i = j + 1
    End
  Next j
  If (j > i) Then
    k = j - i
    u$[n] = StrCopy(s$,i,k)
    i = j
  Else
    n = n - 1
    Break()
  End
Next n

مثلا بعد از اجرا کردن کد بالا اینطوری تکه ها رو نمایش می دهیم :
کد:
If (n > 0) Then
  For i = 1 To n
    s$ = 'u[' + CHAR(i) + '] = '+ CHR(39)+ u$[i] + CHR(39)
    Message("","s$")
  Next i
End

یا مثلا اینطوری داخل EditBox های دیگری نمایش اش می دهیم :
کد:
DisplayValue("EditBox1","u$[1]")
DisplayValue("EditBox2","u$[2]")
DisplayValue("EditBox3","u$[3]")
سلام خسته نباشید ، از طریق این کدها یه فایل txt فراخونی می کنم امام فاصله های رو نمیشناسه و کل لاین رو تو یه آرایه نشون میده جداجداش نمی کنه ، ممنون میشم اگه یه نگاهی بهش بکنید ، اینم فیلش
 

پیوست ها

  • ARAD KHAN.zip
    1.6 کیلوبایت · بازدیدها: 1
ببخشید فایلشو اشتباهی فرستادم این فایل پروژست
 

پیوست ها

  • ARAD-KHAN.zip
    510.8 کیلوبایت · بازدیدها: 6
اگه منظورت همون جمله اول باشه که گفتی هر کلمه را جداگانه نشان بدی و کاراکتر نشانت هم اسپیسه.کل رشته را با اسپیس جمع ببند از گت آرایه نام تعداد اسپیسها را دربیار به تعدادش حلقه درست کن با گت آرایه آیتم هر کلمه را جدا ذخیره کن.
 

جدیدترین ارسال ها

بالا