سلام
میتونید ابتدا اسامی فعلی رو حذف و سپس اسامی جدید رو جایگزین کنید.
نکته: امکان داره هر دو اسم یکی باشه، مثلا با سلام امیر سرداری خدمت جناب امیر سرداری.
این متد اسامی جدید رو که با اسامی فعلی باید جایگزین بشن رو همراه با رشته ای که تغییرات باید اعمال بشه میگیره و تغییرات رو اعمال میکنه، و رشته ی مذکور حتما و حتما باید ساختاری که شما گفتید رو داشته باشه (با سلام aaaaaa خدمت جناب bbbbbb) و در غیر اینصورت نتیجه صحیح بر نمیگردونه.
متد:
private static string changeNames(string newFirstName, string newSecondName, string str)
{
// اندیس شروع اسم اول
int firstName_startIndex = str.IndexOf("سلام") + 5;
// اندیس پایان اسم اول
int firstName_endIndex = str.IndexOf("خدمت") - 1;
// حذف اسم قبلی
str = str.Remove(firstName_startIndex, firstName_endIndex - firstName_startIndex);
// جایگزینی اسم جدید
str = str.Insert(firstName_startIndex, newFirstName);
// اندیس شروع اسم دوم
int secondName_startIndex = str.IndexOf("جناب") + 5;
// حذف اسم دوم
str = str.Remove(secondName_startIndex);
// جایگزینی اسم جدید
str = str.Insert(secondName_startIndex, newSecondName);
return str;
}
آزمودن متد:
static void Main(string[] args)
{
string str = "با سلام vb341 خدمت جناب younes ebrahimi";
str = Program.changeNames("omidvar", "vbnetgenius", str);
Console.WriteLine(str);
Console.ReadKey();
}
روشهای بهتری هم ممکنه وجود داشته باشه ولی در حال حاضر این روش به ذهنم رسید و هر طور که به نظرتون خوبه میتونید این متد رو بهبود بدید.