Browse Source

页面编辑 - 拆分 分割符 特殊字符判断

OYXH\oyxh 1 year ago
parent
commit
12e444587a

+ 53 - 14
PDF Office/Model/Dialog/HomePageToolsDialogs/HomePageSplitDialogModel.cs

@@ -1,27 +1,31 @@
-using Prism.Mvvm;
+using PDF_Master.CustomControl;
+using Prism.Mvvm;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 
 namespace PDF_Master.Model.HomePageToolsDialogs
 {
-    public class HomePageSplitDialogModel:BindableBase
+    public class HomePageSplitDialogModel : BindableBase
     {
-
         /// <summary>
         /// 拆分模式
         /// </summary>
         public SplitMode Mode = SplitMode.AveragePages;
+
         /// <summary>
         /// 页面范围形式
         /// </summary>
         public PageRangeMode PageMode = PageRangeMode.OddPage;
+
         /// <summary>
         /// 拆分模式份数或者页数
         /// </summary>
         public int GetModeCount = 1;
+
         /// <summary>
         /// 页面信息
         /// </summary>
@@ -40,21 +44,23 @@ namespace PDF_Master.Model.HomePageToolsDialogs
                     case 1:
                         PageMode = PageRangeMode.OddPage;
                         break;
+
                     case 2:
                         PageMode = PageRangeMode.EvenPage;
                         break;
+
                     case 3:
                         PageMode = PageRangeMode.CustomPage;
                         break;
+
                     default:
                         break;
                 }
             }
         }
 
-
-
         private double pageNum = 1;
+
         /// <summary>
         /// 平均页数
         /// </summary>
@@ -69,6 +75,7 @@ namespace PDF_Master.Model.HomePageToolsDialogs
         }
 
         private double filesCount = 1;
+
         /// <summary>
         /// 平均文件数
         /// </summary>
@@ -83,6 +90,7 @@ namespace PDF_Master.Model.HomePageToolsDialogs
         }
 
         private bool isAveragePages = true;
+
         /// <summary>
         /// 平均按页拆分 是否选中
         /// </summary>
@@ -92,7 +100,7 @@ namespace PDF_Master.Model.HomePageToolsDialogs
             set
             {
                 SetProperty(ref isAveragePages, value);
-                if(value)
+                if (value)
                 {
                     Mode = SplitMode.AveragePages;
                 }
@@ -100,6 +108,7 @@ namespace PDF_Master.Model.HomePageToolsDialogs
         }
 
         private bool isAveragePDF = false;
+
         /// <summary>
         /// 平均按PDF拆分 是否选中
         /// </summary>
@@ -116,7 +125,6 @@ namespace PDF_Master.Model.HomePageToolsDialogs
             }
         }
 
-
         private bool isCustomRange = false;
         /// <summary>
         /// 自定义页面范围,是否选中
@@ -151,6 +159,7 @@ namespace PDF_Master.Model.HomePageToolsDialogs
         }
 
         private bool hasLabel = true;
+
         /// <summary>
         /// 是否含有标签
         /// </summary>
@@ -164,11 +173,10 @@ namespace PDF_Master.Model.HomePageToolsDialogs
             }
         }
 
-
         /// <summary>
         /// 文件名与标签分隔符
         /// </summary>
-        private string fileNameDeimiter="-";
+        private string fileNameDeimiter = "-";
 
         public string FileNameDeimiter
         {
@@ -176,11 +184,35 @@ namespace PDF_Master.Model.HomePageToolsDialogs
             set
             {
                 SetProperty(ref fileNameDeimiter, value);
+                // 拆分 分割符 特殊字符判断
+                if (string.IsNullOrEmpty(fileNameDeimiter) == false)
+                {
+                    string pattern = @"[\\\/:*?""<>|.]"; // 定义不允许出现的字符的正则表达式模式
+
+                    Regex regex = new Regex(pattern);
+
+                    //if (regex.IsMatch(fileName))
+                    //{
+                    char[] invalidChars = { '\\', '/', ':', '*', '?', '"', '<', '>', '|', '.' };
+
+                    //英文
+                    if (fileNameDeimiter.IndexOfAny(invalidChars) != -1)
+                    {
+                        fileNameDeimiter = string.Empty;
+                        Console.WriteLine("文件名包含不允许的字符");
+                        // 进行报错处理的代码逻辑
+                        AlertsMessage alertsMessage = new AlertsMessage();
+                        string illegalChars = @"\ /<>:|""?*";
+                        alertsMessage.ShowDialog($"文件名包含不允许的字符", $"文件名包含不允许的字符{illegalChars}", App.ServiceLoader.GetString("Text_ok"), IconType.Tip);
+                    }
+                }
+
                 RefreshFileName();
             }
         }
 
         private bool hasDeimiter = true;
+
         /// <summary>
         /// 是否含有分隔符
         /// </summary>
@@ -194,15 +226,16 @@ namespace PDF_Master.Model.HomePageToolsDialogs
             }
         }
 
-
         /// <summary>
         /// 文件名与标签分隔符
         /// </summary>
         public bool FrontFileName = true;
+
         /// <summary>
         /// 页码 存入页码范围;
         /// </summary>
         public List<int> PageParm = new List<int> { };
+
         /// <summary>
         /// 文件名;
         /// </summary>
@@ -218,10 +251,11 @@ namespace PDF_Master.Model.HomePageToolsDialogs
         }
 
         private bool isSourceNameFront = true;
+
         /// <summary>
         /// 原始文档名前置
         /// </summary>
-        public bool  IsSourceNameFront
+        public bool IsSourceNameFront
         {
             get { return isSourceNameFront; }
             set
@@ -232,6 +266,7 @@ namespace PDF_Master.Model.HomePageToolsDialogs
         }
 
         private string sourceName;
+
         /// <summary>
         /// 原始文件名
         /// </summary>
@@ -252,9 +287,9 @@ namespace PDF_Master.Model.HomePageToolsDialogs
         {
             string label = HasLabel ? FileNameLabel : "";
             string deimiter = HasDeimiter ? FileNameDeimiter : "";
-            if(isSourceNameFront)
+            if (isSourceNameFront)
             {
-                FileName = SourceFileName + deimiter + label +"1"+ ".pdf";
+                FileName = SourceFileName + deimiter + label + "1" + ".pdf";
             }
             else
             {
@@ -268,10 +303,12 @@ namespace PDF_Master.Model.HomePageToolsDialogs
             /// 按页平均拆分
             /// </summary>
             AveragePages,
+
             /// <summary>
             /// 按文件平均拆分
             /// </summary>
             AverageFiles,
+
             /// <summary>
             /// 自定义页码范围拆分
             /// </summary>
@@ -284,14 +321,16 @@ namespace PDF_Master.Model.HomePageToolsDialogs
             /// 奇数页
             /// </summary>
             OddPage,
+
             /// <summary>
             /// 偶数页
             /// </summary>
             EvenPage,
+
             /// <summary>
             /// 自定义页面范围
             /// </summary>
             CustomPage
         }
     }
-}
+}