fix: Added processing logic for special characters to prevent file write failures.

This commit is contained in:
real-zony 2023-05-24 20:29:02 +08:00
parent 1f312c749d
commit 62d08df735
2 changed files with 27 additions and 2 deletions

View File

@ -1,9 +1,11 @@
using System.Text.RegularExpressions;
namespace ZonyLrcTools.Common
{
/// <summary>
/// 歌曲信息的承载类,携带歌曲的相关数据。
/// </summary>
public class MusicInfo
public partial class MusicInfo
{
/// <summary>
/// 歌曲对应的物理文件路径。
@ -38,9 +40,17 @@ namespace ZonyLrcTools.Common
/// <param name="artist">歌曲的作者。</param>
public MusicInfo(string filePath, string name, string artist)
{
FilePath = filePath;
FilePath = Path.Combine(Path.GetDirectoryName(filePath)!, HandleInvalidFilePath(Path.GetFileName(filePath)));
Name = name;
Artist = artist;
}
private string HandleInvalidFilePath(string srcText)
{
return InvalidFilePathRegex().Replace(srcText, "");
}
[GeneratedRegex(@"[<>:""/\\|?*]")]
private static partial Regex InvalidFilePathRegex();
}
}

View File

@ -0,0 +1,15 @@
using Shouldly;
using Xunit;
using ZonyLrcTools.Common;
namespace ZonyLrcTools.Tests;
public class MusicInfoTests
{
[Fact]
public void InvalidFilePathTest()
{
var musicInfo = new MusicInfo("C:\\Users\\Zony\\Music\\[ZonyLrcTools]:? - 01. 你好.mp3", "你好", "Zony");
musicInfo.FilePath.ShouldBe(@"C:\Users\Zony\Music\[ZonyLrcTools] - 01. 你好.mp3");
}
}