ورود

View Full Version : بریدن یک string



majidas2006
جمعه 27 خرداد 1390, 14:44 عصر
سلام
من میخوام یک sttring را برش بزنم

مثلا

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.


میخوام خط اولش نباشه فقط 3 خط بعدیش باشه
چیکار کنم؟

محسن واژدی
جمعه 27 خرداد 1390, 15:26 عصر
سلام علیکم
برای بریدن و برداشتن یک بخش خاصی از یک string از یکی از توابع Left,Right و Mid بسته به نیاز استفاده میشود

Left: از قسمت چپ متن به اندازه مشخص شده جدا میکند
Right: از قسمت راست متن به اندازه مشخص شده جدا میکند
Mid: از وسط متن به اندازه مشخص شده قسمتی از متن را برش میزند

نمونه زیر را مشاده کنید:

Dim s$
s$ = "This is a text"
MsgBox "Left: " & Left(s, 4)
MsgBox "Right: " & Right(s, 4)
MsgBox "Mid: " & Mid(s, 6, 4)


در سوال شما فرض را بر این میگیریم که کاراکتر "." پایان دهنده خط اول است پس برای جدا سازی آن از دستور زیر استفاده میکنیم:


Dim s$
s$ = "The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users"
MsgBox Mid(s, InStr(1, s, ".") + 1)


موفق باشید

Mr'Jamshidy
جمعه 27 خرداد 1390, 15:29 عصر
برای این کاری که گفتی میتونی از کد زیر استفاده کنی

2 تا حالت به زهنم رسید برات سورس کردم

majidas2006
جمعه 27 خرداد 1390, 15:45 عصر
سلام مرسی میدونی مشکل من چیه؟
من میخوام با winsock وصل شم به سرور مثلا یه فایل text رو بخونم
Winsock1.GetData Data, vbString, bytesTotal
فایل رو میریزه تو Data
ولی بالاش چند خط اضاقی هم داره
می نویسه :
HTTP/1.1 200 OK
Date: Fri, 17 Jun 2011 11:31:27 GMT
Server: LiteSpeed
Connection: close
Content-Type: text/html
Content-Length: 18

salam
من با split نیولاین ها رو بریدم و مثلا از خط 7 به بعدو چاپ کردم
ولی الان یه مشکل دارم اونم این که واسه صفحات مختلف سایت این header فرق میکنه و تعداد خطوطش ثابت نیست
من میخوام فقط محتوای فایل text ام رو بخونم نه header سرور
خیلی مهمه چون نمی تونم از msinet استفاده کنم باید با winsock بنویسم
؟

pcdownload.bloghaa.com
جمعه 27 خرداد 1390, 18:12 عصر
برای فهمیدن همین مساله بین اطلاعات صفحه و محتوای فایل فاصله بیشتری گذاشته.

یعنی بین Content-Length: 18 و salam فاصله بیشتری هست.
پس باید باید اولین دوتا(یا سه تا) new line را پیدا کنی و بعد از اون را بچسبی.

majidas2006
شنبه 28 خرداد 1390, 22:21 عصر
خوب دقیقا این کار رو چجوری انجام بدم؟
من با split نوشتم
a_strTemp = Split(Data, Chr(13))
ولی یه خط حاوی 2تا newline رو چجوری نشون پیدا کنم؟

Mr'Jamshidy
یک شنبه 29 خرداد 1390, 09:01 صبح
کدت رو به این تغییر بده

a_strTemp = Split(Data, vbCrlf & vbCrlf)

majidas2006
یک شنبه 29 خرداد 1390, 16:22 عصر
مرسی
راستی یه سوال خیلی مهم دارم
این چیزایی که با winsock گرفتیم ، مثلا اگه یه سایت رو خونده باشیم کل کد سایت رو چرا میده؟
مثلا من میخوام فقط خروجی مرور گر رو ببینم ولی <html><head> و .... اینا رو میده به جای خروجی اون

آخه می خوام تو head صفحه زبانشو به صورت unicode بزارم که کاراکترای فارسی صفحه که با winsock میگیرم خراب نشه
چیکار کنم؟
چجوری اون <html> رو نشون ندم یا اینکه فارسی رو درست کنم؟
ضمنا در مورد فناوری xml توضیح میدید؟
میشه با هاش از سایت مثلا آخرین پست های سایت رو گرفت؟
ممنون میشم جواب منو بدید