جایگزین کردن بین دو رشته
سلام من دارم یه برنامه رو مینویسم که قراره از اسکریپت های sql server دیتابیس رو بسازه
همه چیز پیش رفته منتها مشکل من اینه که کاربر باید محل ذخیره دیتابیس رو مشخص کنه
مسیر رو مشخص میکنه ولی جایگزین کردن اون توی اسکریپت کارو یکم سخت کرده
اینوببینید
USE [master] GO /****** Object: Database [db_test_60] Script Date: 07/28/2017 15:37:08 ******/ CREATE DATABASE [db_test_60] ON PRIMARY ( NAME = N'db_test_60', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_test_60.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'db_test_60_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_test_60_log.ldf' , SIZE = 4672KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO
میخوام ادرسی که کاربر وارد میکنه بعد از FILENAME = N' و قبل از , SIZE = قرار بگیره
چطوری این مقدار رو جایگزین کنم
البته باید در نظر داشته باشید که مقدار C:\Program Files\Microsoft SQL Serve و ... هیچ گاه ثابت نیست و ممکنه طول کارکتر تو سیستم هر کسی متفاوت باشه اصل سوالم اینه میخوام ادرسی که کاربر وارد میکنه بعد از FILENAME = N' و قبل از , SIZE = قرار بگیره
6 پاسخ
دوستان عزیز جواب های شما ، جواب سوال من نبود
من میخوام بین دو رشته رو مقدار ش رو عوض کنم
برنامه با سی شارپ هست
در صورتی که رشته وسط مشخص نیست چیه
string str = "mehdi here adeli";
شما اومدی عبارت here رو گفتی در صورتی که من میخوام بین مهدی و عادلی رو تغییر بدم
اون دو لینک بالا هم مرتبط نبود و قرار نیست داخل سیستم کاربر تغییری ایجاد کنم
من میخوام مقادیر بین
FILENAME = N' و قبل از , SIZE = رو تغییر بدم تو سی شارپ از طریق کدنویسی
آقا یه سوال دیگه الان وقتی اینو جایگزین میکنم اسم دیتابیس و نمیشه کاری کرد
من الان کل متن رو جایگزین میکنم ولی اسم دیتابیس و فایل لاگ رو نمی تونم کاری کنم اونم جایگزین میشه
Regex x = new Regex("(FILENAME = N')(.*?)(' , SIZE =)"); string s = richTextBox1.Text; string repl = textBox1.Text; string Result = x.Replace(s, "$1" + repl + "$3"); richTextBox2.Text = Result;
بوسیله این کد حلش کردم میخوام بینم ایا اصولی هست یا نه
richtext اولی اسکریپت دیتابیس هست که داخلشه
text1 هم ادرسی که دیتابیس ذخیره میشه که اینو کاربر تایین میکنه
richtext2 هم برا این که خودم نتیجه رو ببینم
آیا اصولی هست این روش
این عبارات (.*?) چی هستن و کاربردشون چیه
توی این خط
string Result = x.Replace(s, "$1" + repl + "$3");
مقدار $1 , $3 از کجا اومدن . چی هستن
سلام بر اساتید محترم
ببینید من یه برنامه نوشتم که میاد اسکریپت دیتابیس رو توی سی شارپ ران میکنه و دیتابیس ساخته میشه تا اینجاش و مشکلی ندارم اما مشکلی که دارم اینه که میخوام کاربر محل ذخیره دیتابیس رو توی اسکریپت تغییر بده منتها با کد
( NAME = N'db_test_60', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_test_60.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'db_test_60_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_test_60_log.ldf' , SIZE = 4672KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
اینا رو نگا با این خط کد تونستم آدرس محل رو تغییر بدم
Regex x = new Regex("(FILENAME = N')(.*?)(' , SIZE =)"); string s = richTextBox1.Text; string repl = textBox1.Text; string Result = x.Replace(s, "$1" + repl + "$3"); richTextBox2.Text = Result;
ریچ تکست شامل کلیه متن های اسکریپته و تکست باکس هم آدرسی که کاربر دستی وارد میکنه
اما مشکل من اینه که اسم دیتابیس و اسم فایل لاگ رو نمیتونم کاری کنم یعنی با کد بالا اسم فایل لاگ و دیتابیس جایگزین ادرسی میشه که کاربر وارد کرده چطوری میتونم کاری کنم که اسم دیتابیس و فایل لاگ تغییر نکنه و ثابت بمونه و فقط آدرس پوشه عوض بشه
C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
فرض رو هم براین بزاریم که ممکنه آدرس ها یکسان نباشه از من اینه پیشفرض یه کاربر دیگه میاد دیتابیس رو تو یه درایو دیگه میسازه چطوری میشه چنین کارب کرد
سلام به شما دوست عزیز. شما نگفتید که که چه زبانی در حال برنامه نویسی هستید. اگر برای سی شارپ درحال برنامه نویسی هستید باید به روش زیر عمل کنید.
string str = "mehdi here adeli"; var findingText = "here"; var index = str.IndexOf(findingText); var startIndex = index + findingText.Length; var secondText = str.Insert(startIndex, "new string");
با این کار new string در جای مشخص شده درج خواهد شد و خروجی به شکل زیر خواهد بود
mehdi herenew string adeli