Jump to content
برای استفاده از انجمن و عضـویت کلیک کنید.

AnswerCenter

مرکز پاسخگویی به سوالات برنامه نویسی

درخواست سفارش پروژه

اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

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


  • 0
Sign in to follow this  
batman123

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

Question

batman123    1

کاربر عادی

سلام.

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

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

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0
محمدرضا شاهپیری    3,965

مدیر کل سایت

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

 

  • پسندیدن 3
  • تشکر 1

Share this post


Link to post
Share on other sites
  • 0
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

 

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

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

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

Share this post


Link to post
Share on other sites
  • 0
محمدرضا شاهپیری    3,965

مدیر کل سایت

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

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

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

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

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

  • پسندیدن 1

Share this post


Link to post
Share on other sites
  • 0
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

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

Share this post


Link to post
Share on other sites
  • 0
محمدرضا شاهپیری    3,965

مدیر کل سایت

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

 

  • پسندیدن 1

Share this post


Link to post
Share on other sites
  • 0
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

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

Share this post


Link to post
Share on other sites
  • 0
Mr Silence    100

کاربر رو به رشد

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

 

  • پسندیدن 1

Share this post


Link to post
Share on other sites
  • 0
batman123    1

کاربر عادی

11 hours ago, Mr Silence said:

Label1.Typeface = Typeface.DEFAULT_BOLD

 

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

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

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

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

Share this post


Link to post
Share on other sites
  • 0
batman123    1

کاربر عادی

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

سلام

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


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

 

آقا ممنون

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...