سلام دوستان. من دنبال یه تابع میگردم که رشته 12%45*78541@789$56 را تبدیل کنه به 56$789@78541*45%12 . ممنون میشم کمکم کنید. خیلی هنگ کردم
سلام دوستان. من دنبال یه تابع میگردم که رشته 12%45*78541@789$56 را تبدیل کنه به 56$789@78541*45%12 . ممنون میشم کمکم کنید. خیلی هنگ کردم
تابع reverse کلاس string استفاده کن
string str="12%45*78541@789$56";
str=str.Revers();
آخرین ویرایش به وسیله Mahmoud.Afrad : سه شنبه 05 آبان 1394 در 23:04 عصر
دوست گلم ممنون اما من نمیخوام رشته م برعکس بشه. میخوام رشته از محل کاراکترهای خاص تفکیک بشه و بعد از آخر به اول چیده بشه. خیلی تلاش کردم اما نشد. ممنون میشم اساتید وقت بذارن
خوب اینم با یه حلقه کاملا راحته منتها شما بگین مبنای جدا سازی چی باید باشه؟
string mystr = "12%45*78541@789$56";محل رشته های غیر مجاز معلوم میشه تو text2 حالا میتونی رشته ها رو برداری و برعکسش کنی
string str = "%*@$";
foreach (char c in str)
{
int i = 0;
while ((i = mystr.IndexOf(c, i)) != -1)
{
// Print out the substring.
textBox1.Text += (mystr.Substring(i))+"-";
textBox2.Text += mystr.IndexOf(mystr.Substring(i), i) + "-";
// Increment the index.
i++;
}
}
جداسازی مبنای خاصی نداره دوستم. ممنون که کد نوشتین اما من خنگ بازم نتونستم با وجود مشخص کردن اندیس کاراکترهای خاصُ به خروجی مناسب برسم. ممنون میشم کد کامل بذارید
دوست من ببین اندیس هارو میدونی الان درسته؟
مثلا فرض کنیم اندیس اولین کاراکتر غیر مجاز تو 4 هست.
حالا تو میتونی به صورت زیر به رشته وسط این کاراکتر غیرمجاز دست یابی.
اگر اسم رشته اصلی mystr باشه
mystr.Substring(0, 4);
که صفر نقطه شروع و 4 تعداد کاراکتری که میخوای خوانده شه.
الان میخوای رشته سوم رو بخونی یعنی میشه اندیس کاراکتر غیر مجاز سوم ،نقطه شروع و نقطه پایان ،(اندیس کاراکتر غیر مجاز چهارم - اندیس کاراکتر غیر مجاز سوم(که میشه طول رشته)).
الان رشته هارو داری هر کاری میخوای باهاش بکن .مثلا برعکسش کن .که سرچ کنی معکوس کردن رشته میاره واست
موفق باشی
سلام
به این صورت ، یک بار اعداد رو در یک آرایه ذخیره میکنی و یک بار جدا کننده ها رو ، بعد آرایه ها رو Reverse میکنی و نهایتا نتیجه رو در یک رشته قرار میدی (مثل متدی که نوشتم)
public String ReverseString(string input)
{
string output = string.Empty;
string[] numbers = Regex.Split(input, @"\D+");
string[] seprators = Regex.Split(input, @"\d+");
seprators = seprators.Where(x => !string.IsNullOrEmpty(x)).ToArray();
Array.Reverse(numbers);
Array.Reverse(seprators);
for (int i = 0; i < numbers.Count(); i++)
{
output += (i < seprators.Length) ? numbers[i] + seprators[i] : numbers[i];
}
return output;
}
موفق باشید.
قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]
سلام جناب آشتیانی و سایر دوستان. ممنون بابت جواب ها
جناب آشتیانی رشته من الزاما عددی نیست و ممکنه کلمات فارسی و انگلیسی و یا ترکیبی از اونا باشه که با یه الگوی نامرتب کنار هم نشستن و جای کاراکترهای خاص هم اصلا مشخص نیست. توراخدا کمک
سلام
چرا هیچی مشخص نیست پس؟ بالاخره یه قاعدهای باید داشته باشه ، کاراکترهای جداکننده مشخص هستن آیا؟ یعنی چه کاراکتر هایی بعنوان جداکننده عبارت ها استفاده میشوند
قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]
کاراکترهای جداکننده هر کاراکتر خاصی میتونه باشه. طول رشته ها مشخص نیست و عبارت های بین کاراکترها هم مشخص نیست. راستش من دارم روی فیلد شرح کالا توی همکاران سیستم یه سرچ خاص مینویسم. کاربر کاراکترهای خاص وارد کرده و بعضی عبارت هابرعکس شده. حالا من میخوام همه اونها را به حالت درستشون تبدیل کنم
کاراکترهای جداکننده همه کاراکترهای خاص مثه !@#$%^&*()_- میتونه باشه
سلام
متد بالا رو به اینصورت تغییر بدید
public String ReverseString(string input)
{
string output = string.Empty;
string[] expressions = Regex.Split(input, @"[!@#$%^&*()\-_]");
string[] seprators = Regex.Split(input, @"[^\.!@#$%^&*()\-_\s]");
seprators = seprators.Where(x => !string.IsNullOrEmpty(x)).ToArray();
Array.Reverse(expressions);
Array.Reverse(seprators);
for (int i = 0; i < expressions.Count(); i++)
{
output += (i < seprators.Length) ? expressions[i] + seprators[i] : expressions[i];
}
return output;
}
استفادش هم به اینصورت میشه ، فرض کن رشته ورودی در textbox1 هست و خروجی رو در textbox2 نمایش میدی
textBox2.Text = ReverseString(textBox1.Text);
موفق باشید.
قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]
عالی بود آقای آشتیانی . ممنوووووووووووووووووووووو ووووووووووووووووووووون