PDA

View Full Version : سوال: بدست آوردن متن بین دو مشخصه مشخص



FirstLine
دوشنبه 02 آذر 1388, 13:55 عصر
با سلام
ببخشید اگه تکراری هست، جستجو کردم اما موردی که مشکل را حل کند نیافتم.
یه متن بصورت زیر دارم
<code>
str_Source="it is test string for replacing"
</code>
در vb.net چجوری متن بین دو عبارت و را بدست بیاورم؟
لطفا راهنمایی بفرمایید و یا لینک مناسب معرفی کنید.
با تشکر

ACorvinus
دوشنبه 02 آذر 1388, 23:00 عصر
سلام .

من دوتا راه حل براتون نوشتم، بسته به سلیقه خودتون میتونین ازش استفاده کنین:

راه حل 1) Basic

به جای و هر چیزی میتونی بنویسی که اونارو با متغیرهای StartPattern و FinishParttern مشخص می کنی .



Dim str_Source As String = "it is [block] test string for replacing"
Dim StartPattern As String = ""
Dim FinishPattern As String = ""
Dim Result As String = String.Empty
Result = str_Source.Substring(str_Source.IndexOf(StartPatte rn) + StartPattern.Length, str_Source.IndexOf(FinishPattern) - (str_Source.IndexOf(StartPattern) + StartPattern.Length))



این تیکه کد هر رشته ای که مابین اولین [block] و اولین [block/] باشه رو بر میگردونه .
نکته: فضاهای خالی رشته بدست اومده در داخل Result رو میتونید با تابع Trim حذف کنید !


راه حل 2) Advanced


در این راه حل از مقوله RegularExpression استفاده شده به طوری که برای استفاده از این راه حل باید دستور زیر رو در قبل از شروع کلاست بنویسی:


Imports System.Text.RegularExpressions


خوب حالا دستورات زیر رو که فقط برای رشته هایی که دارای [block] و [block/] هستند جواب میده . (البته هر چی مابین این دوتا باشه رو بر میگردونه)



Dim str_Source As String = "it is [block] test string for replacing"
Dim Pattern As String = "^?[\w-\.]*\[block\](?<RESULT>.*)\[/block\]?[\w-\.]*"
Dim M As Match = Regex.Match(str_Source, Pattern)
Result = M.Groups("RESULT").Value


نکته: فضاهای خالی رشته بدست اومده در داخل Result رو میتونید با تابع Trim حذف کنید !


امیدوارم موفق باشی .


(اگه میخوای در Pattern دستکاری کنی قبلش برو Microsoft MSDN و بشین همه مطالبی که در مورد Regular Expression گفته شده رو بخون. کسل کنندست ولی جالبه !!!)