50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

جایگزین کردن بین دو رشته

سلام من دارم یه برنامه رو مینویسم که قراره از اسکریپت های 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 = قرار بگیره

پرسیده شده در 1396/05/13 توسط

6 پاسخ

0

دوستان عزیز جواب های شما ، جواب سوال من نبود

من میخوام بین دو رشته رو مقدار ش رو عوض کنم

برنامه با سی شارپ هست

در صورتی که رشته وسط مشخص نیست چیه

string str = "mehdi here adeli";

شما اومدی عبارت here رو گفتی در صورتی که من میخوام بین مهدی و عادلی رو تغییر بدم

اون دو لینک بالا هم مرتبط نبود و قرار نیست داخل سیستم کاربر تغییری ایجاد کنم

من میخوام مقادیر بین

FILENAME = N' و قبل از , SIZE = رو تغییر بدم تو سی شارپ از طریق کدنویسی

پاسخ در 1396/05/14 توسط
0

آقا یه سوال دیگه الان وقتی اینو جایگزین میکنم اسم دیتابیس و نمیشه کاری کرد

من الان کل متن رو جایگزین میکنم ولی اسم دیتابیس و فایل لاگ رو نمی تونم کاری کنم اونم جایگزین میشه

پاسخ در 1396/05/15 توسط
0
            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 از کجا اومدن . چی هستن

پاسخ در 1396/05/14 توسط
0

سلام بر اساتید محترم

ببینید من یه برنامه نوشتم که میاد اسکریپت دیتابیس رو توی سی شارپ ران میکنه و دیتابیس ساخته میشه تا اینجاش و مشکلی ندارم اما مشکلی که دارم اینه که میخوام کاربر محل ذخیره دیتابیس رو توی اسکریپت تغییر بده منتها با کد


( 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

فرض رو هم براین بزاریم که ممکنه آدرس ها یکسان نباشه از من اینه پیشفرض یه کاربر دیگه میاد دیتابیس رو تو یه درایو دیگه میسازه چطوری میشه چنین کارب کرد

پاسخ در 1396/05/15 توسط
2

سلام به شما دوست عزیز. شما نگفتید که که چه زبانی در حال برنامه نویسی هستید. اگر برای سی شارپ درحال برنامه نویسی هستید باید به روش زیر عمل کنید.

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
پاسخ در 1396/05/13 توسط

پاسخ شما