gpt4 book ai didi

string - 是否有任何流行和/或有效的递归查找和替换算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:57:32 24 4
gpt4 key购买 nike

我目前正在开发一个应用程序,需要重命名来自各种变体的音乐文件,例如

艺术家 - 以艺术家等为特色的标题壮举

或者

艺术家 - 以艺术家等为特色的标题 ft

或者

艺术家 - 标题(feat. Featuring artist, etc

艺术家 - 标题(ft. 特色艺术家等)

我想你明白了。

我目前的 hacky 方法:

private void FindAndReplace()
{
try
{
var replaceList = new Dictionary<string, string>
{
{"[", "("},
{"]", ")"},
{"(Official Audio)", ""},
{"(Audio)", ""},
{"OFFICIAL", ""},
{"Official", ""},
{"(Video)", ""},
{"Video)", ""},
{"(video)", ""},
{"video)", ""},
{"(Lyric","" },
{ " Featuring ", " (ft. "},
{",)", ")"},
{" FEAT ", " (FEAT "},
{" Feat ", " (FEAT "},
{" Feat. ", " (FEAT "},
{"(Feat.", "(ft."},
{"(FEAT", "(feat"},
{"( Music",""},
{"(feat", "(ft"},
{"FEAT ", "ft"},
{"( )", ""},
{"()", ""},
{"(|", ""},
{"( |", ""},
{"( )", ""},
{"FT ", "ft. "},
{"Ft ", "ft. "},
{"(Explicit)", ""},
{"ft ", "ft. "},
{" Ft. ", " (ft. "},//[ FT. , (ft. ]
{" FT. ", " (ft. "},//[ FT. , (ft. ]
{" FT", " (ft"},//[ FT, (ft]
{"(FT ", "(ft. "},
{" (ft ", " (ft."},
{" (Ft ", "(ft. "}
};

while (true)
{
var reiterate = false;
foreach (var vari in replaceList)
{
if (FileName.ToLower().Contains(vari.Key.ToLower()))
{
reiterate = true;
}
}
if (reiterate)
foreach (var replaceItem in replaceList.Where(replaceItem => FileName.ToLower().Contains(replaceItem.Key.ToLower()))
)
{
if (FileName.Contains(replaceItem.Key))
FileName = FileName.Replace(replaceItem.Key, replaceItem.Value);
else
FileName = FileName.Replace(replaceItem.Key.ToLower(), replaceItem.Value);

}
if (reiterate) continue;
break;
}
}
catch (Exception ex)
{

}
}

请注意,文件名中可能需要修复大量内容。我偶尔会遇到这种方法的错误,它们都源于替换字典的顺序。有没有更有效、更清洁的方法来实现我的目标?

最佳答案

您可以使用正则表达式合并规则。

例如

replaceAll("(?i)[\\s\\(]*fe?a?t\\.?[\\s]", " (ft. ")

有了这个,您可以替换所有/大部分围绕“功能”部分的规则。

关于string - 是否有任何流行和/或有效的递归查找和替换算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37925497/

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