من یه متن دارم چجوری می تونم بگم یک قسمتی رو در نظر بگیره ؟؟
حالا اون قسمت رو در نظر گرفتیم (مثلا یک کلمه) چجوری بگم که کلمه بعدی اش رو پیدا کنه ؟؟؟
من یه متن دارم چجوری می تونم بگم یک قسمتی رو در نظر بگیره ؟؟
حالا اون قسمت رو در نظر گرفتیم (مثلا یک کلمه) چجوری بگم که کلمه بعدی اش رو پیدا کنه ؟؟؟
درخصوص کار با مقادیر رشته ای جستجو کنید. البته پیشنها میکنم بیشتر در خصوص کار با RichTextBox جستجو کنید
در چی در نظر بگیره؟ داخل TextBox؟ یا داخل متغیر string؟
فرضا یک textBox1 داریم. بهش میگیم از کاراکتر اندیس 4 ام به طول 5 کاراکتر رو انتخاب کن و Selection کن :
private void button1_Click(object sender, EventArgs e)
{
textBox1.Select(4, 5);
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "This is a test";
textBox1.HideSelection = false;
}
یا فرضا میگیم الان که کاربر در textBox کلمه ای رو کامل یا ناقص انتخاب کرده برو جلو و کلمه بعدی رو انتخاب کن :
private void button1_Click(object sender, EventArgs e)
{
var start = textBox1.SelectionStart;
var length = 0;
for (; ((start < textBox1.TextLength) && (char.IsWhiteSpace(textBox1.Text[start]) == false)); start++)
{
}
for (; ((start < textBox1.TextLength) && (char.IsWhiteSpace(textBox1.Text[start]))); start++)
{
}
for (; ((start + length < textBox1.TextLength) && (char.IsWhiteSpace(textBox1.Text[start + length]) == false)); length++)
{
}
textBox1.Select(start, length);
}
در متغیر استرینگ
ببینید به نظرم سوالتون رو خوب مطرح نکردین بهتره چند نمونه ورودی خروجی یا حداقل کدتون که تا الان نوشتین رو قرار بدین.
الان عبارت «در نظر بگیره» چه معنایی داره؟
اگر در متغیر string باشه، باید از قبل بدونید که از کجا تا کجا رو می خواهید انتخاب کنید، مثل همون مثال کدی که نوشتم موقعیت شروع start و طول انتخاب یعنی length اش مهمه.
اگر میدونید کجا است که با SubString به سادگی انتخابش می کنید :
var s1 = "This is a sample text.";
var s2 = s1.Substring(10, 6);
اگر نمیدونید و دنبالش بگردید و پیدا بشه باز میشه انتخابش کرد ولی کاربردی نیست چون اگه متنی که لازم داریم در دستمون هست چرا جای دیگه دنبالش بگردیم؟
var s1 = "This is a sample text.";
var pos = s1.IndexOf("sample");
if (pos >= 0)
{
var s2 = s1.Substring(pos, 6);
}
در مورد رفتن به کلمه بعدی هم همین قاعده هست، اگر محل شروع کلمه قبلی رو در متن بدونید میتوانید کلمه بعدی رو بدست بیارید، مثلا میدونید sample کجا است و حالا عبارت بعدی اش رو میخواهید :
var s1 = "This is a sample text.";
var start = s1.IndexOf("sample");
var length = 0;
for (; ((start < s1.Length) && (char.IsWhiteSpace(s1[start]) == false)); start++)
{
}
for (; ((start < s1.Length) && (char.IsWhiteSpace(s1[start]))); start++)
{
}
for (; ((start + length < s1.Length) && (char.IsWhiteSpace(s1[start + length]) == false)); length++)
{
}
var nextWord = s1.Substring(start, length);
دقیقا جهت معکوس میشه، بجای ++ از -- استفاده می کنیم و بجای اینکه حواسمون به انتهای رشته رسیدن باشه، به ابتدای رشته رسیدن حساسیت نشون میدیم :
var s1 = "This is a sample text.";
var start = s1.IndexOf("sample");
var length = 1;
for (; ((start >= 0) && (char.IsWhiteSpace(s1[start]) == false)); start--)
{
}
for (; ((start > 0) && (char.IsWhiteSpace(s1[start]))); start--)
{
}
for (; ((start > 0) && (char.IsWhiteSpace(s1[start - 1]) == false)); length++, start--)
{
}
var prevWord = (start >= 0) ? s1.Substring(start, length) : "";