gpt4 book ai didi

f# - 将多个后续无效字符转换为一个下划线?

转载 作者:行者123 更新时间:2023-12-01 16:24:17 25 4
gpt4 key购买 nike

以下字符串不是有效的文件名。

"File   name\r\n\t\t\t\t\r\n\t\t\t\t  (Revised 2018-05-31 15:35:41.16).txt"

以下代码将其转换为有效的文件名。

let fn = """File   name

(Revised 2018-05-31 15:35:41.16).txt""";;
let invalid = System.IO.Path.GetInvalidFileNameChars();;

String.Join("",
fn |> Seq.filter(fun x ->
not (Array.exists (fun y -> y = x) invalid)
)
)
// "File name (Revised 2018-05-31 153541.16).txt"

它只是删除这些无效字符。如何将这些无效的转换为_?对于这些多个后续无效字符,我希望将它们替换为仅一个 _。所以预期的结果应该是

"File   name_  (Revised 2018-05-31 15_35_41.16).txt"

最佳答案

这应该有效:

open System.Text.RegularExpressions

let normalizeFileName name =
let invalidPattern =
System.IO.Path.GetInvalidFileNameChars()
|> Seq.map (string >> Regex.Escape)
|> String.concat ""
|> sprintf "[%s]+"

Regex.Replace(name, invalidPattern, "_")

关于f# - 将多个后续无效字符转换为一个下划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50689849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com