PDA

View Full Version : تفکیک رشته با یک کارکتر خاص



rezaTavak
پنج شنبه 11 بهمن 1386, 09:15 صبح
سلام

تا بحال شده مثلا بخواهید رشته ای که دارای چند جدا کننده است را به چند رشته تبدیل کنید مثلا 123,234,56,78, را به ۱۲۳ ۲۳۴ ۵۶ ۷۸ ؟



FUNCTION Split
LPARAMETERS tcStr,tcSeperator,laArrayStr
LOCAL lnLocate,lnPrelocate,i
lnPreLocate = 1
FOR i=1 TO 1000
lnLocate = AT(tcSeperator,tcStr,i)
IF lnLocate > 0
laArrayStr[i]=SUBSTR(tcStr,lnPreLocate,lnLocate-lnPreLocate)
lnPreLocate = lnLocate + 1
ELSE
laArrayStr[i]=SUBSTR(tcStr,lnPreLocate)
EXIT
ENDIF
NEXT
ENDFUNC


طریقه استفاده:

پارمترها شامل: رشته ای که باید تفکیک شود کاراکتر جدا کننده و آدرس آرایه ای که در آن رشته قرار گیرد.

مثلا :


split("123,34,345,6578,345,456,",",",@laArray)

rezamim
جمعه 12 بهمن 1386, 13:05 عصر
من تقریبا به همین شکل ولی با استفاده از تابع STREXTRACT اینکارو میکردم

mehran_337
یک شنبه 14 بهمن 1386, 08:41 صبح
با اجازه دوستان ، جسارتا" بنده هم روش خود را عرض می کنم :

تابع فوق برای بدست آوردن تعداد کلمات یک عبارت با جداساز دلخواه :


GetWordCount('12*17*189*85*584','*')

بنده در پارامتر دوم تعریف می کنم کارکتر * بعنوان جدا ساز می باشد حال یک کارکتر فاصله ، کاما ، خط تیره یا هر کارکتر دلخواهی می تواند در عبارت فوق جدا ساز باشد .
نکته : عبارت اول یک عبارت رشته ایست پس می تواند "this is a sample " هم باشد .

تابع دیگری نیز جهت برگرداندن کلمه خاصی داخل این عبارت با جداساز مورد نظر :


GETWORDNUM(cString, nIndex, cDelimiters)
مثال :
?GETWORDNUM('12*17*189*85*584',3,'*')

تابع فوق رشته 189 را برمیگرداند چون گفته ایم سومین کلمه در عبارت فوق که هر کلمه با * جدا شده است را برگردان .