رفتن به مطلب

بایگانی شده

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

  • 0
batman123

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

سوال

batman123    1

سلام.

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

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

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

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

 

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

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

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

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


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

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

پست های پیشنهاد شده

در 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

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
batman123    1
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 باشه یعنی کلمه توی خط هست و همین خط رو برگردوندیم

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
batman123    1
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

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
batman123    1
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

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

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
Mr Silence    102
در 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

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
batman123    1
11 hours ago, Mr Silence said:

Label1.Typeface = Typeface.DEFAULT_BOLD

 

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

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

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

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

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
مجید آرتا    5,810

سلام

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

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

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
batman123    1
6 hours ago, مجید آرتا said:

سلام

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


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

 

آقا ممنون

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

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


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

×
×
  • جدید...