/// <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); } }
/// <summary> /// 右侧文本编码转换按钮 /// </summary> private void RightBtnConvert_Click(object sender, EventArgs e) { byte[] content = RightRichText.ByteData.ToArray(); ListItem li = RightEncodingBox.SelectedItem as ListItem; RightRichBox.Text = ""; RightRichBox.AppendTextColorful(ConvertToUTF8(Encoding.GetEncoding(li.Value), content), Color.White); RightRichText.Lines = RightRichBox.Text.Split('\n', '\r').ToList(); }
/// <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(); } }