کار با substring و indexof
با عرض سلام و احترام خدمت تمام دوستان.
یک قطعه کد ساده نوشتم که درون تکس باکس وقتی کاربر نام و نام خانوادگی خود را تایپ کرد در دو لیبل نمایش بدهد و هر چه فاصله اول اخر ان است را ندیده بگیرد و تنها یک فاصله بین نام نام خانوادگی را درنظر بگیرد و بقیه ی ان را با trim حذف کند؛ کد بنده کار میکند اما وقتی بعد از نام خانوادگی یک فاصله میزارم باید ندیده بگیرد که نمیگیرد؛ به نظرم Trim اصلا کار نمیکنه چون اول نام هم فاصله میزارم ؛فاصله کار میکنه؛ ممنون میشم اگر که اشکال کدم را بگید.
با تشکر.
string str = textBox1.Text;
str.Trim();
int i = textBox1.Text.Length;
int j = str.LastIndexOf(" ");
str.Trim();
label1.Text = str.Substring(j+1);
label2.Text = str.Substring(0, j);
نقل قول: کار با substring و indexof
سلام
این همه کد برای چیه؟
string str=textBox1.Text.TrimStart(); // Ebteda
string str=textBox1.Text.TrimEnd(); // Enteha
string str=textBox1.Text.Trim(); // har 2 taraf
نقل قول: کار با substring و indexof
برای حذف فاصله ها از ابتدا و انتها و قرار دادن فقط یک فاصله در بین نام و نام خانوادگی از کد زیر استفاده کنید
textBox1.Text = Regex.Replace(textBox1.Text, @"\s+", " ").Trim() ;
نقل قول: کار با substring و indexof
دوستان ممنونم از پاسختون اما من میخوام نام و نام خانوادگی را از هم تفکیک کنم و در دو برچسب نمایش بدم. که از split استفاده کردم اونم جواب درستی نداد. باید از substring استفاده کرد؛ سوال اینه کدم کجاش مشکل داره??؟؟
نقل قول: کار با substring و indexof
دوست دارم بدونم مشکل کده خودم چی بوده که گفتم هر چی فاصله اول و اخر تکس باکس است بردار بعد طولش رو بدست میاره و اندیس اولین فاصله از اخر بدست میاره و بعد دوباره هر چی فاصله هست برمیدارد(بین نام نام خانوادگی) و بعد هم چاپ میکنه.
و اما جناب abdullah20 کد شما با کمی تغییرات جواب داد به صورت :
textBox1.Text = Regex.Replace(textBox1.Text, @"\s", " ").Trim();
string str = textBox1.Text;
int i= str.LastIndexOf(" ");
label1.Text = str.Substring(0, i);
label2.Text = str.Substring(i + 1);
نقل قول: کار با substring و indexof
کد شما باز هم اشکال داره
برای این که وقتی کاربر نام و نام خانوادگی را در تکس باکس وارد کرد نام را در یک لیبل و نام خانوادگی را در لیبل دیگر نمایش بدید میتونید از کد زیر استفاده کنید:
string[] words = Regex.Replace(textBox1.Text, @"\s+", " ").Trim().Split(' ');
label1.Text = words[0];
label2.Text = words[1];
ولی در اینجا مثلا اگر " عبداله اسکندری " را وارد کنید مشکلی نیست جون دو قسمت هستش و به خوبی کار میکنه ولی اگر نام و نام خاوادگی چند قسمت بود مثلا " محمد رضا رسولی نژاد" شما از کجا میخواید متوجه بشید که کدوم قسمت اسم و کدوم قسمت نام خانوادگی هستش؟
نقل قول: کار با substring و indexof
به این موضوع هم فکر کردم اما فعلا متاسفانه به نتیجه ای نرسیدم بین محمدرضا برفرض کاربر فاصله نزنه اما رسولی نژاد امکانش نیست :(
نقل قول: کار با substring و indexof
سلام اگه رشته وردی بیش از حد فاصله داشته باشه رو درست می کنه.
مثلا " محمد علی حسین اکبر "
خروجی ="محمد علی حسین اکبر"
string DelSpaceInString(string StrName)
{
string re = "";
string[] str = StrName.Trim().Split(' ');
foreach (string s in str)
{
if (s != "")
re += s+ " ";
}
return re.Trim();
}
از دوستان کسی هست که برای این رشته تابع اصلاح کننده بنویسه. یعنی بین اسم ها یک فاصله ایجاد کنیم.
" محمدمیلادحسین "
خروجی ="محمد میلاد حسین"