我见过这个CheatSheet for Regex in C#
但是,我正在尝试创建一个可以替代它的正则表达式函数:
while (fname.Contains(".."))
{
fname = fname.Replace("..", ".");
}
if (fname.StartsWith(".")) {
fname= fname.Remove(0, 1);
}
fname = fname.Replace("&", "_");
fname = fname.Replace("#", "_");
fname = fname.Replace("{", "_");
fname = fname.Replace("}", "_");
fname = fname.Replace("%", "_");
fname = fname.Replace("~", "_");
fname = fname.Replace("?", "_");
我根本就没有得到如何编写正在解决此问题的正则表达式。 任何人都可以帮我一把吗?
答案 0 :(得分:7)
string dotsPattern = @"\.\.+"; //2 or more dots.
fname=Regex.Replace(fname, dotsPattern ,".");
String firstSymbolDot = @"^\.";
fname = Regex.Replace(fname, firstSymbolDot, String.Empty);
string symbolPattern = "[&#{}%~?]"; //any of given symbol;
string result = Regex.Replace(fname, symbolPattern, "_");
答案 1 :(得分:0)
为什么要循环fname=fname.Replace("..", ".");
,你是否只想用一个点替换多个点的所有序列?
这是:
fname=Regex.Replace(fname,@"\.+",".");
至于其他人:
fname=Regex.Replace(
Regex.Replace(
fname,
@"&|\#|\{|\}|%|~|\?",
"_"
),
@"^\.",
""
);