正则表达式替换问题
我正在尝试编写一个程序来遍历大量 .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);
}
}
}
I'm trying to make a program to go through a lot of .sql files and replace names for example view_name to [dbo].[view_name]. So far it replaces most of the words, however if a name contains number in brackets like (3) or (7) and so on it wont replace anything within that file. I've provided the code below.
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);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在构建正则表达式模式时,您应该
转义
字符:You should
Escape
the characters when building a regex pattern: