Пример #1
0
        /// <summary>
        /// 比较左右两边的内容行,
        /// </summary>
        private void CompareTwoLines(string left, string right)
        {
            int i = 0;

            for (i = 0; i < left.Length && i < right.Length; i++)
            {
                if (left[i] == right[i])
                {
                    LeftRichBox.AppendTextColorful(left[i].ToString(), Color.LightGray);
                    RightRichBox.AppendTextColorful(right[i].ToString(), Color.LightGray);
                }
                else
                {
                    LeftRichBox.AppendTextColorful(left[i].ToString(), Color.Red);
                    RightRichBox.AppendTextColorful(right[i].ToString(), Color.Red);
                }
            }
            for (; i < left.Length; i++)
            {
                LeftRichBox.AppendTextColorful(left[i].ToString(), Color.Red);
            }
            for (; i < right.Length; i++)
            {
                RightRichBox.AppendTextColorful(right[i].ToString(), Color.Red);
            }
        }
Пример #2
0
        /// <summary>
        /// 左侧文本编码转换按钮
        /// </summary>
        private void LeftBtnConvert_Click(object sender, EventArgs e)
        {
            byte[]   content = LeftRichText.ByteData.ToArray();
            ListItem li      = LeftEncodingBox.SelectedItem as ListItem;

            LeftRichBox.Text = "";
            LeftRichBox.AppendTextColorful(ConvertToUTF8(Encoding.GetEncoding(li.Value), content), Color.White);
            LeftRichText.Lines = LeftRichBox.Text.Split('\n', '\r').ToList();
        }
Пример #3
0
        /// <summary>
        /// 进行左右文本对比
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            string leftLine  = string.Empty;
            string rightLine = string.Empty;

            LeftRichText.ResetLineIndex();
            LeftRichBox.Text = "";
            RightRichText.ResetLineIndex();
            RightRichBox.Text = "";
            bool leftConsumed  = true;
            bool rightConsumed = true;

            do
            {
                if (leftConsumed)
                {
                    leftLine     = LeftRichText.NextLine();
                    leftConsumed = false;
                }
                if (rightConsumed)
                {
                    rightLine     = RightRichText.NextLine();
                    rightConsumed = false;
                }
                // 任何一边读完的就出去,剩下的标红
                if (leftLine == null || rightLine == null)
                {
                    break;
                }
                if (leftLine.Trim() == "")
                {
                    LeftRichBox.AppendText(leftLine);
                    LeftRichBox.AppendText("\n");
                    leftConsumed = true;
                }
                if (rightLine.Trim() == "")
                {
                    RightRichBox.AppendText(rightLine);
                    RightRichBox.AppendText("\n");
                    rightConsumed = true;
                }
                // 对两边的非空白文本进行对比
                if (!leftConsumed && !rightConsumed)
                {
                    // 附加空白头
                    string lefttmp = leftLine.Trim();
                    LeftRichBox.AppendText(leftLine.Substring(0, leftLine.IndexOf(lefttmp)));
                    string righttmp = rightLine.Trim();
                    RightRichBox.AppendText(rightLine.Substring(0, rightLine.IndexOf(righttmp)));
                    // 对比正文
                    CompareTwoLines(lefttmp, righttmp);
                    // 附加空白尾
                    LeftRichBox.AppendText(leftLine.Substring(leftLine.IndexOf(lefttmp) + lefttmp.Length) + "\n");
                    RightRichBox.AppendText(rightLine.Substring(rightLine.IndexOf(righttmp) + righttmp.Length) + "\n");
                    leftConsumed  = true;
                    rightConsumed = true;
                }
            } while (true);
            // 补齐剩下的信息
            while (leftLine != null)
            {
                LeftRichBox.AppendTextColorful(leftLine, Color.Red);
                leftLine = LeftRichText.NextLine();
            }
            while (rightLine != null)
            {
                RightRichBox.AppendTextColorful(rightLine, Color.Red);
                rightLine = RightRichText.NextLine();
            }
        }