我找到了一个我认为非常适合学习 F# 的快速项目。但是,由于某种原因,我无法将大脑环绕在它周围。经过几个小时的教程甚至一些电影,我仍然只是......不明白。
所以我想开始使用企业管理器“生成脚本”对我们的存储过程进行版本控制,并想清除脚本日期。我放弃并在 C# 中做到了,但现在我真的很好奇,并希望得到一些见解。
我并不是完全空手而归,这是我的 C# 代码:
string path = @"C:\Subversion\CompanyName\SQL\DBName";
string fileSpec = "*.sql";
string pattern = @"Script Date: \d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}";
string replace = "Script Date: ";
foreach (var file in Directory.EnumerateFiles(path, fileSpec))
{
string content = File.ReadAllText(file);
content = Regex.Replace(content, pattern, replace);
File.WriteAllText(file, content, Encoding.Unicode);
}
我猜在 F# 中有一些看起来很酷的 2-3 行解决方案......我很想看到它。
谢谢你的提示!我已经更新它以匹配下面正在做的事情,以使视觉比较可能更具启发性。下面还有很棒的评论。
最佳答案
let path = @"C:\Subversion\CompanyName\SQL\DBName"
let fileSpec = "*.sql"
let pattern = @"Script Date: \d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}"
let replace = "Script Date: "
Directory.EnumerateFiles (path, fileSpec)
|> Seq.iter (fun file ->
let content = Regex.Replace (File.ReadAllText file, pattern, replace)
File.WriteAllText (file, content, Encoding.Unicode))
请注意,您的 C# 代码 ( 编辑 : was) 也比必要的冗长得多。
关于c# - F# 伤害了我的大脑...谁能帮助将 C# 翻译成 F#?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7907635/