رفتن به مطلب
  • 0

جستجوی کلمه و نمایش خط مربوط به آن کلمه


MR.B4A

سوال

سلام.

فرض کنید ما این پاراگراف رو در برنامه داریم

به طورکلی ما به دنبال نوشتن کتاب جذاب نبودیم

هدف ما یادگیری بهتر و سریع برنامه نویسان زبان بیسیک فور اندروید در این پروژه بود.

با استفاده از این سورس کد و کمی سلیقه میتوانید یک کتاب عالی و درجه یک بنویسید و بسیاری از دستورات و مفاهیم برنامه را یاد بگیرید.

 

حالا میخوایم برنامه ما طوری باشه که وقتی کلمه کتاب را جستجو کردیم، اون خطی رو که کلمه کتاب درش اومده رو برای ما داخل یک لیبل نمایش بده.(البته این رو هم در نظر داشته باشید که این پاراگراف داخل دیتابیس نیست، بلکه داخل یک ادیت تکست هست.)

آیا توی بیسیک میشه این کار رو انجام داد؟

ممنون میشم راهنماییم کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

10 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

6 hours ago, مجید آرتا said:

سلام

این کد رو بعد color2  قرار بده »


rs.Style(rs.STYLE_BOLD,0,rs.Length)

 

آقا ممنون

منتها این کل متنو بولد میکنه نه فقط اون کلمه رو

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 3 ساعت قبل، batman123 گفته است :

 

این دوتا ساب رو به پروژه اضافه کنید.

Private Sub findLine(word As String,text As String) As String
	Dim allLine() As String=SplitText(text)
	For Each line As String In allLine
		If line.Contains(word) Then Return line
	Next
	Return ""
End Sub

Sub SplitText(Text As String) As String()
	Dim sText() As String
	sText = Regex.Split(CRLF, Text)
	Return sText
End Sub

حالا به صورت زیر میتونید خط مربوط به کلمه رو توی ادیتتکست پیدا کنید.

   Dim text As String=EditText1.Text
	Dim rezult As String=findLine("کتاب",text)
	If rezult.Length>0 Then 
		Label1.Text=rezult
		Else
		Label1.Text="not found"
	End If

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

On 3 فروردین 1399 at 4:46 PM, محمدرضا شاهپیری said:

این دوتا ساب رو به پروژه اضافه کنید.


Private Sub findLine(word As String,text As String) As String
	Dim allLine() As String=SplitText(text)
	For Each line As String In allLine
		If line.Contains(word) Then Return line
	Next
	Return ""
End Sub

Sub SplitText(Text As String) As String()
	Dim sText() As String
	sText = Regex.Split(CRLF, Text)
	Return sText
End Sub

حالا به صورت زیر میتونید خط مربوط به کلمه رو توی ادیتتکست پیدا کنید.


   Dim text As String=EditText1.Text
	Dim rezult As String=findLine("کتاب",text)
	If rezult.Length>0 Then 
		Label1.Text=rezult
		Else
		Label1.Text="not found"
	End If

 

سلام دوست عزیز

خیلی ممنون از راهنماییتون

اما میشه کمی هم توضیح فارسی راجع به این ساب ها بدید. خیلی لطف میکنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 7 ساعت قبل، batman123 گفته است :

سلام دوست عزیز

خیلی ممنون از راهنماییتون

اما میشه کمی هم توضیح فارسی راجع به این ساب ها بدید. خیلی لطف میکنید.

اول اومدیم با متد SplitText همه لاینها رو توی یه آرایه ریختیم. بعد هم با متد findLine اومدیم و توی همه ی خطها با حلقه for پیمایش کردیم دستور line.Contains(word اگه true باشه یعنی کلمه توی خط هست و همین خط رو برگردوندیم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

On 6 فروردین 1399 at 6:57 PM, محمدرضا شاهپیری said:

اول اومدیم با متد SplitText همه لاینها رو توی یه آرایه ریختیم. بعد هم با متد findLine اومدیم و توی همه ی خطها با حلقه for پیمایش کردیم دستور line.Contains(word اگه true باشه یعنی کلمه توی خط هست و همین خط رو برگردوندیم

آقا دمت گر، خیلی کارمو راه انداختی

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

این کدهای منه. ممنون میشم یه کمک دیگه بدید

Sub btn_search_Click
	lbl_result.Visible=True
	
	Dim Text As String=txt_text.Text
	Dim rezult As String=findLine(txt_kalame.Text,Text)
	If rezult.Length>0 Then
		lbl_result.Text=rezult
	Else
		lbl_result.Text="not found"
	End If
End Sub

'-----------------

Private Sub findLine(word As String,text As String) As String
	Dim allLine() As String=SplitText(text)
	For Each line As String In allLine
		If line.Contains(word) Then Return line
	Next
	Return ""
End Sub

Sub SplitText(Text As String) As String()
	Dim sText() As String
	sText = Regex.Split(CRLF, Text)
	Return sText
End Sub

چی کار کنم همه خط هایی که کلمم درش اومده، توی لیبل نشون بده؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 2 ساعت قبل، batman123 گفته است :

آقا دمت گر، خیلی کارمو راه انداختی

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

این کدهای منه. ممنون میشم یه کمک دیگه بدید

چی کار کنم همه خط هایی که کلمم درش اومده، توی لیبل نشون بده؟

ساب findline رو به شکل زیر تغییر بدید

Private Sub findLine(word As String,text As String) As String
	Dim allLine() As String=SplitText(text)
	Dim strbuild As StringBuilder
	  strbuild.Initialize
	For Each line As String In allLine
		If line.Contains(word) Then 
			strbuild.Append(line).Append(CRLF)
		End If
	Next
	Return strbuild.ToString
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

On 8 فروردین 1399 at 3:29 PM, محمدرضا شاهپیری said:

ساب findline رو به شکل زیر تغییر بدید


Private Sub findLine(word As String,text As String) As String
	Dim allLine() As String=SplitText(text)
	Dim strbuild As StringBuilder
	  strbuild.Initialize
	For Each line As String In allLine
		If line.Contains(word) Then 
			strbuild.Append(line).Append(CRLF)
		End If
	Next
	Return strbuild.ToString
End Sub

 

حالا اگه بخوایم کلمه رو بولدش کنیم باید چی کار کنیم؟!

من با این دستورات تونستم رنگشو توی متن قرمز کنم، اما میخوام بولدشم بکنم

rezult = rezult.Replace(txt_kalame.Text,"{R}"&txt_kalame.Text&"{R}")
		Dim rs As RichString
		rs.Initialize(rezult)
		rs.Color2(Colors.Red, "{R}")
		Label1.Text = rs

ممنون میشم توضیح بدید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 48 دقیقه قبل، batman123 گفته است :

حالا اگه بخوایم کلمه رو بولدش کنیم باید چی کار کنیم؟!

من با این دستورات تونستم رنگشو توی متن قرمز کنم، اما میخوام بولدشم بکنم


rezult = rezult.Replace(txt_kalame.Text,"{R}"&txt_kalame.Text&"{R}")
		Dim rs As RichString
		rs.Initialize(rezult)
		rs.Color2(Colors.Red, "{R}")
		Label1.Text = rs

ممنون میشم توضیح بدید

Label1.Typeface = Typeface.DEFAULT_BOLD

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

11 hours ago, Mr Silence said:

Label1.Typeface = Typeface.DEFAULT_BOLD

 

نه دوست عزیز، منظور منو متوجه نشدید

این خطی که شما زحمت کشیدید نوشتید، کل متن لیبل رو بولد میکنه

اما من میخوام اون کلمه ای که به رنگ قرمز دراومده رو بولد کنه، نه همه متن رو

اون چه جوریه؟!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

این کد رو بعد color2  قرار بده »

rs.Style(rs.STYLE_BOLD,0,rs.Length)

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...