0
我正試圖讓程序通過很多.sql文件並將示例view_name的名稱替換爲[dbo]。[view_name]。到目前爲止,它取代了大部分單詞,但是如果一個名稱包含像(3)或(7)等括號中的數字,它就不會替換該文件中的任何內容。我已經提供了下面的代碼。正則表達式替換問題
FolderBrowserDialog fb = new FolderBrowserDialog();
fb.ShowDialog();
string directory = fb.SelectedPath;
if(directory != String.Empty)
{
DirectoryInfo di = new DirectoryInfo(directory);
FileInfo fi = new FileInfo(directory);
FileInfo[] fiArray = di.GetFiles();
for (int i = 0; i < fiArray.Length; i++)
{
string result;
//StreamReader
using (StreamReader sr = new StreamReader(directory + "\\" + fiArray[i].ToString()))
{
string temp = sr.ReadToEnd();
string tempNameExtens = fiArray[i].Name;
string tempNameNoExtens = Path.GetFileNameWithoutExtension(fiArray[i].Name);
MessageBox.Show(tempNameNoExtens);
string pattern = "\\s" + tempNameNoExtens;
string replace = " [dbo].[" + tempNameNoExtens + "]";
Regex rgx = new Regex(pattern);
result = rgx.Replace(temp, replace);
}
//StreamWriter
using (StreamWriter sw = new StreamWriter(directory + "\\" + fiArray[i].ToString()))
{
sw.WriteLine(result);
}
}
}
你的意思是,'tempNameNoExtens'包含像'ABC(5)'? – Howard 2011-06-02 12:31:53
是啊,以及它獲取文件名如此模板 - 複製(2)和模板 - 複製(5)類似的東西.. – 2011-06-02 12:36:14
你不需要像這樣的直線字符串的正則表達式。 'result = temp.Replace(「」+ tempNameNoExtens,「[dbo]。[」+ tempNameNoExtens +「]」);'應該就好了。 – Town 2011-06-02 12:39:01