public CommandContext(RegexMode mode, RegexOptions options, string inputRegex, string inputFormat, string inputText, string outputText)
 {
     this.RegexMode = mode;
     this.RegexOptions = options;
     this.InputRegex = inputRegex;
     this.InputFormat = inputFormat;
     this.InputText = inputText;
     this.OutputText = outputText;
 }
Exemple #2
0
 public CommandContext(RegexMode mode, RegexOptions options, string inputRegex, string inputFormat, string inputText, string outputText)
 {
     this.RegexMode    = mode;
     this.RegexOptions = options;
     this.InputRegex   = inputRegex;
     this.InputFormat  = inputFormat;
     this.InputText    = inputText;
     this.OutputText   = outputText;
 }
Exemple #3
0
        /// <summary>
        /// 验证规则
        /// </summary>
        /// <param name="regexMode">验证模式</param>
        /// <param name="msg">错误消息</param>
        /// <returns></returns>
        private static string RegexPrecept(RegexMode regexMode, string title, ref string errorMsg)
        {
            string regValue = string.Empty;

            errorMsg = string.Empty;
            switch (regexMode)
            {
            case RegexMode.Age:
                regValue = @"^([0-9]{1,2}|1[0-4][0-9]|150)$";
                errorMsg = title + "格式错误,必须介于0-150之间!";
                break;

            case RegexMode.Chinese:
                //[\u4e00-\u9fa5]   //表示中文字符
                //[^\u4e00-\u9fa5]  //表示不可存在中文
                //区别在于存在字符^
                regValue = @"[^\u4e00-\u9fa5]";
                errorMsg = title + "不可使用中文字符!";
                break;

            case RegexMode.Email:
                regValue = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
                errorMsg = title + "格式错误,如:[email protected] !";
                break;

            case RegexMode.FloatingPointNumbers:
                regValue = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$";
                errorMsg = title + "必须输入浮点数,如8.88!";
                break;

            case RegexMode.Integer:
                regValue = @"^-?\d+$";
                errorMsg = title + "必须输入整数!";
                break;

            case RegexMode.IP:
                regValue = @"\d+\.\d+\.\d+\.\d+";
                errorMsg = title + "格式错误!";
                break;

            case RegexMode.PositiveInteger:
                regValue = @"^\d+$";
                errorMsg = title + "必须输入正整数!";
                break;

            case RegexMode.PostCode:
                regValue = @"\d{6}";
                errorMsg = title + "格式错误,如:443400!";
                break;

            case RegexMode.URL:
                regValue = @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
                errorMsg = title + "格式错误,如:http://www.baidu.com !";
                break;
            }
            return(regValue);
        }
 public RegexProcessContext(string matchRegexExpression, RegexOptions matchRegexOptions, string replaceRegexPattern, string inputText, RegexMode currentMode, OutputMode outputMode)
 {
     MatchRegexExpression = matchRegexExpression;
     MatchRegexOptions = matchRegexOptions;
     InputText = inputText;
     CurrentMode = currentMode;
     OutputMode = outputMode;
     if (replaceRegexPattern == null)
     {
         replaceRegexPattern = String.Empty;
     }
     ReplaceRegexPattern = replaceRegexPattern.Replace("\\n", Environment.NewLine).Replace("\\t", "	");
 }
Exemple #5
0
 public RegexProcessContext(string matchRegexExpression, RegexOptions matchRegexOptions, string replaceRegexPattern, string inputText, RegexMode currentMode, OutputMode outputMode)
 {
     MatchRegexExpression = matchRegexExpression;
     MatchRegexOptions    = matchRegexOptions;
     InputText            = inputText;
     CurrentMode          = currentMode;
     OutputMode           = outputMode;
     if (replaceRegexPattern == null)
     {
         replaceRegexPattern = String.Empty;
     }
     ReplaceRegexPattern = replaceRegexPattern.Replace("\\n", Environment.NewLine).Replace("\\t", "	");
 }
Exemple #6
0
 /// <summary>
 /// 验证规则
 /// </summary>
 /// <param name="regexMode">验证模式</param>
 /// <param name="msg">错误消息</param>
 /// <returns></returns>
 private static string RegexPrecept(RegexMode regexMode, string title, ref string errorMsg)
 {
     string regValue = string.Empty;
     errorMsg = string.Empty;
     switch (regexMode)
     {
         case RegexMode.Age:
             regValue = @"^([0-9]{1,2}|1[0-4][0-9]|150)$";
             errorMsg = title + "格式错误,必须介于0-150之间!";
             break;
         case RegexMode.Chinese:
             //[\u4e00-\u9fa5]   //表示中文字符
             //[^\u4e00-\u9fa5]  //表示不可存在中文
             //区别在于存在字符^
             regValue = @"[^\u4e00-\u9fa5]";
             errorMsg = title + "不可使用中文字符!";
             break;
         case RegexMode.Email:
             regValue = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
             errorMsg = title + "格式错误,如:[email protected] !";
             break;
         case RegexMode.FloatingPointNumbers:
             regValue = @"^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$";
             errorMsg = title + "必须输入浮点数,如8.88!";
             break;
         case RegexMode.Integer:
             regValue = @"^-?\d+$";
             errorMsg = title + "必须输入整数!";
             break;
         case RegexMode.IP:
             regValue = @"\d+\.\d+\.\d+\.\d+";
             errorMsg = title + "格式错误!";
             break;
         case RegexMode.PositiveInteger:
             regValue = @"^\d+$";
             errorMsg = title + "必须输入正整数!";
             break;
         case RegexMode.PostCode:
             regValue = @"\d{6}";
             errorMsg = title + "格式错误,如:443400!";
             break;
         case RegexMode.URL:
             regValue = @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
             errorMsg = title + "格式错误,如:http://www.baidu.com !";
             break;
     }
     return regValue;
 }
Exemple #7
0
 /// <summary>
 /// 正则验证(注意:第一句验证,isContinue需设置为true)
 /// </summary>
 /// <param name="value">要验证的值</param>
 /// <param name="title">错误消息标题</param>
 /// <param name="validateEmpty">数据为空字符时是否验证</param>
 /// <param name="regexMode">验证模式</param>
 /// <param name="isContinue">是否继续验证</param>
 /// <param name="errorMsg">验证失败显示的消息</param>
 /// <returns></returns>
 public static void RegexValidate(TextBox textBox, string title, bool validateEmpty, RegexMode regexMode, ref bool isContinue, ref string errorMsg)
 {
     if (isContinue && validateEmpty)
     {
         isContinue = Regex.IsMatch(textBox.Text.Trim(), RegexPrecept(regexMode, title, ref errorMsg));
         if (!isContinue) { textBox.Focus(); }
     }
     errorMsg = isContinue ? string.Empty : errorMsg;
 }
Exemple #8
0
 /// <summary>
 /// 正则验证(注意:第一句验证,isContinue需设置为true)
 /// </summary>
 /// <param name="value">要验证的值</param>
 /// <param name="title">错误消息标题</param>
 /// <param name="validateEmpty">数据为空字符时是否验证</param>
 /// <param name="regexMode">验证模式</param>
 /// <param name="isContinue">是否继续验证</param>
 /// <param name="errorMsg">验证失败显示的消息</param>
 /// <returns></returns>
 public static void RegexValidate(string value, string title,bool validateEmpty, RegexMode regexMode, ref bool isContinue, ref string errorMsg)
 {
     if (isContinue && validateEmpty)
     {
         isContinue = Regex.IsMatch(value, RegexPrecept(regexMode, title, ref errorMsg));
     }
     errorMsg = isContinue ? string.Empty : errorMsg;
 }
        private void ApplyButton_Click(object sender, RoutedEventArgs e)
        {
            DateTime startTime = DateTime.Now;

            string TT1 = T1; // T1 Temp
            string TT2 = T2; // T2 Temp

            // 内容查找与替换
            if (ReplaceText.IsChecked.Value)
            {
                TT1 = F.Replace(TT1, rtFindText.Text, rtReplacement.Text, !rtIgnoreCase.IsChecked.Value);
            }
            // 删除括号内容
            else if (Bracket.IsChecked.Value)
            {
                TT1 = F.Bracket(TT1, ref TT2, brLeft.Text, brRight.Text, brKeepBracket.IsChecked.Value, brNestBracket.IsChecked.Value);
                if (!brShowBracketContent.IsChecked.Value)
                {
                    TT2 = F.EM;
                }
            }
            // 删除空白
            else if (DeleteBlank.IsChecked.Value)
            {
                int mode = 0;
                if (dbRemoveAll.IsChecked.Value)
                {
                    mode = 1;
                }
                else if (dbRemoveFront.IsChecked.Value)
                {
                    mode = 2;
                }
                else if (dbRemoveEnd.IsChecked.Value)
                {
                    mode = 3;
                }
                else if (dbRemoveFrontAndEnd.IsChecked.Value)
                {
                    mode = 4;
                }
                TT1 = F.Blank(TT1, mode);
            }
            // 换行符相关
            else if (NewlineSymbol.IsChecked.Value)
            {
                int mode = 0;
                if (nsRemoveAll.IsChecked.Value)
                {
                    mode = 1;
                }
                else if (nsRemoveUseless.IsChecked.Value)
                {
                    mode = 2;
                }
                else if (nsAddNewlines.IsChecked.Value)
                {
                    mode = 3;
                }
                TT1 = F.Return(TT1, mode);
            }
            // 文本顺序调换
            else if (TextOrder.IsChecked.Value)
            {
                int mode = 0;
                if (toByLine.IsChecked.Value)
                {
                    mode = 1;
                }
                else if (toByWord.IsChecked.Value)
                {
                    mode = 2;
                }
                else if (toByWordInLine.IsChecked.Value)
                {
                    mode = 3;
                }
                TT1 = F.Reorder(TT1, mode);
            }
            // 批量重复文本
            else if (RepeatText.IsChecked.Value)
            {
                TT1 = F.Repeat(TT1, rptTime.Text, rptAutoNewLine.IsChecked.Value);
            }
            // 逐行插入相同内容
            else if (AddByLine.IsChecked.Value)
            {
                TT1 = F.AddTextByLine(TT1, ablInsertContent.Text, ablPosition.Text, ablIgnoreEmpty.IsChecked.Value, ablIgnoreBlank.IsChecked.Value);
            }
            // 逐行插入不同内容
            else if (SpecialInsert.IsChecked.Value)
            {
                TT1 = F.AddTextsByLine(TT1, TT2, siPosition.Text, siIngoreEmpty.IsChecked.Value);
            }
            // 隔行删除
            else if (DeleteByLine.IsChecked.Value)
            {
                TT1 = F.DeleteByLine(TT1, ref TT2, dblReserve.Text, dblRemove.Text);
            }
            // 隔行插入
            else if (InsertByLine.IsChecked.Value)
            {
                TT1 = F.InsertByLine(TT1, TT2, iblReserve.Text, iblInsert.Text);
            }
            // 逐行添加序号
            else if (AddIndexByLine.IsChecked.Value)
            {
                IndexFormat mode = IndexFormat.Normal;
                if (aiblNormal.IsChecked.Value)
                {
                    mode = IndexFormat.Normal;
                }
                else if (aiblChinese.IsChecked.Value)
                {
                    mode = IndexFormat.Chinese;
                }
                else if (aiblRoman.IsChecked.Value)
                {
                    mode = IndexFormat.Roman;
                }
                else if (aiblCircle.IsChecked.Value)
                {
                    mode = IndexFormat.Circle;
                }
                else if (aiblBracket.IsChecked.Value)
                {
                    mode = IndexFormat.Bracket;
                }

                int start  = 1;
                int digits = 0;
                if (int.TryParse(aiblStartValue.Text, out start) && int.TryParse(aiblDigits.Text, out digits))
                {
                    TT1 = F.InsertIndexAt(TT1, aiblLeft.Text, aiblRight.Text, start, digits, aiblPosition.Text, mode, aiblIgnoreEmpty.IsChecked.Value, aiblAlignNumber.IsChecked.Value);
                }
            }
            // 文本格式转换
            else if (FormatText.IsChecked.Value)
            {
                TextFormatMode mode = TextFormatMode.Tranditional;
                if (ftST.IsChecked.Value)
                {
                    mode = TextFormatMode.Tranditional;
                }
                else if (ftTS.IsChecked.Value)
                {
                    mode = TextFormatMode.Simplified;
                }
                else if (ftLU.IsChecked.Value)
                {
                    mode = TextFormatMode.Upper;
                }
                else if (ftUL.IsChecked.Value)
                {
                    mode = TextFormatMode.Lower;
                }
                else if (ftFU.IsChecked.Value)
                {
                    mode = TextFormatMode.InitialUpper;
                }
                else if (ftCP.IsChecked.Value)
                {
                    mode = TextFormatMode.Pinyin;
                }
                TT1 = F.TextFormat(TT1, mode);
            }
            // 正则表达式
            else if (RegularExpression.IsChecked.Value)
            {
                RegexOptions option = F.GetRexOptions(reIgnoreCase.IsChecked.Value, reMultiline.IsChecked.Value, reSingleline.IsChecked.Value,
                                                      reIgnorePatternWhitespace.IsChecked.Value, reExplicitCapture.IsChecked.Value);
                RegexMode mode = RegexMode.Match;
                if (reReplaceOnly.IsChecked.Value)
                {
                    mode = RegexMode.Replace;
                }
                else if (reReplaceAndShow.IsChecked.Value)
                {
                    mode = RegexMode.ReplaceAndMatch;
                }
                else if (reShowOnly.IsChecked.Value)
                {
                    mode = RegexMode.Match;
                }

                TT1 = F.UseRegex(TT1, ref TT2, reFind.Text, reReplace.Text, mode, option);
            }
            // 自定义转换列表
            else if (TransformList.IsChecked.Value)
            {
                PairListManager manager;
                if (TransformListFiles.Text == PairListPanel.CurrentListName.Text)
                {
                    manager = PairListPanel.Manager;
                }
                else
                {
                    manager = new PairListManager(pairFolder + @"\" + TransformListFiles.Text + ".txt");
                }
                TT1 = F.TransformList(TT1, manager, tlR.IsChecked.Value);
            }
            // 文件批量重命名
            else if (RenameFiles.IsChecked.Value)
            {
                ApplyRename();
                return;
            }
            // 剪贴板辅助工具
            else if (ClipboardHelper.IsChecked.Value)
            {
                if (isUsingPasteHelper)
                {
                    return;
                }
                PasteLines = F.SplitByString(TT1, F.NL, !chIgnoreBlank.IsChecked.Value);
                if (PasteLines.Count == 0)
                {
                    MessageBox.Show("当前无可复制文本,剪贴板辅助工具开启失败。");
                    return;
                }
                MessageBox.Show("剪贴板辅助工具已启用,\n共采集到文本信息 " + PasteLines.Count.ToString() + " 行。");
                isUsingPasteHelper = true;
                PasteLineIndex     = 0;
                Clipboard.SetText(PasteLines[0]);

                // 改变相关控件的IsEnabled,防止用户在使用期间更改相关参数,导致程序出错
                chStopButton.Visibility = Visibility.Visible;
                chIgnoreBlank.IsEnabled = false;
                chCycle.IsEnabled       = false;
                chAutoPaste.IsEnabled   = false;
                chAutoKeyDown.IsEnabled = false;
                chDelay.IsEnabled       = false;

                if (chAutoPaste.IsChecked.Value)
                {
                    hotkey           = new HotKey(this, HotKey.KeyFlags.MOD_CONTROL, Form.Keys.V);
                    hotkey.OnHotKey += HotKeyEvent;
                }
                else
                {
                    kh = new KeyboardHook();
                    kh.SetHook();
                    kh.OnKeyDownEvent += HookOnKeyDownEvent;
                }
            }

            // 最终执行效果
            T1 = TT1;
            if (EditorPanel.IsShowingBox2 || EditorPanel.AlwaysShowingBox2) // 当Box2不显示时,使其缓存的文本内容不改变
            {
                T2 = TT2;
            }

            DateTime stopTime = DateTime.Now;

            if (showRunTime)
            {
                TimeSpan span = stopTime - startTime;
                MessageBox.Show("执行耗时" + span.TotalMilliseconds.ToString() + "毫秒");
            }
        }
Exemple #10
0
        /*
         * 所有的字符串操作函数,如果只有一个输出文本,则采用return string的方式
         * 如果有超过一个输出文本,则主要的输出内容采用return string
         * 其余的采用ref string
         */

        /// <summary>
        /// 使用正则表达式
        /// </summary>
        /// <param name="input">输入文本</param>
        /// <param name="output">匹配到的内容</param>
        /// <param name="pattern">模式</param>
        /// <param name="replacement">替换为</param>
        /// <param name="mode">该功能的几种模式</param>
        /// <param name="options">正则表达式选项,默认为无</param>
        /// <returns>修改后的文本</returns>
        public static string UseRegex(string input, ref string output, string pattern, string replacement, RegexMode mode = RegexMode.Replace, RegexOptions options = RegexOptions.None)
        {
            if (mode == RegexMode.Replace)
            {
                replacement = ReplaceSpecialWords(replacement);
                return(Regex.Replace(input, pattern, replacement, options));
            }
            else if (mode == RegexMode.ReplaceAndMatch)
            {
                replacement = ReplaceSpecialWords(replacement);
                output      = CombineWith(Regex.Matches(input, pattern, options), NL);
                return(Regex.Replace(input, pattern, replacement, options));
            }
            else if (mode == RegexMode.Match)
            {
                output = CombineWith(Regex.Matches(input, pattern, options), NL);
                return(input);
            }
            return(EM);
        }
Exemple #11
0
 /// <summary>
 /// 正则验证(注意:第一句验证,isContinue需设置为true)
 /// </summary>
 /// <param name="value">要验证的值</param>
 /// <param name="title">错误消息标题</param>
 /// <param name="validateEmpty">数据为空字符时是否验证</param>
 /// <param name="regexMode">验证模式</param>
 /// <param name="isContinue">是否继续验证</param>
 /// <param name="errorMsg">验证失败显示的消息</param>
 /// <returns></returns>
 public static void RegexValidate(TextBox textBox, string title, bool validateEmpty, RegexMode regexMode, ref bool isContinue, ref string errorMsg)
 {
     if (isContinue && validateEmpty)
     {
         isContinue = Regex.IsMatch(textBox.Text.Trim(), RegexPrecept(regexMode, title, ref errorMsg));
         if (!isContinue)
         {
             textBox.Focus();
         }
     }
     errorMsg = isContinue ? string.Empty : errorMsg;
 }
Exemple #12
0
 /// <summary>
 /// 正则验证(注意:第一句验证,isContinue需设置为true)
 /// </summary>
 /// <param name="value">要验证的值</param>
 /// <param name="title">错误消息标题</param>
 /// <param name="validateEmpty">数据为空字符时是否验证</param>
 /// <param name="regexMode">验证模式</param>
 /// <param name="isContinue">是否继续验证</param>
 /// <param name="errorMsg">验证失败显示的消息</param>
 /// <returns></returns>
 public static void RegexValidate(string value, string title, bool validateEmpty, RegexMode regexMode, ref bool isContinue, ref string errorMsg)
 {
     if (isContinue && validateEmpty)
     {
         isContinue = Regex.IsMatch(value, RegexPrecept(regexMode, title, ref errorMsg));
     }
     errorMsg = isContinue ? string.Empty : errorMsg;
 }