add core
This commit is contained in:
parent
090f9d65bd
commit
ebce23c6c4
21
AIProofread/core/DocumentText.cs
Normal file
21
AIProofread/core/DocumentText.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WordAddInTest2024
|
||||
{
|
||||
public class DocumentText
|
||||
{
|
||||
public string Hash { get; set; }
|
||||
public string Text { get; set; }
|
||||
|
||||
public DocumentText() { }
|
||||
public DocumentText(byte[] hash, string text)
|
||||
{
|
||||
this.Hash = BitConverter.ToString(hash);
|
||||
this.Text = text;
|
||||
}
|
||||
}
|
||||
}
|
67
AIProofread/core/Tools.cs
Normal file
67
AIProofread/core/Tools.cs
Normal file
@ -0,0 +1,67 @@
|
||||
using Microsoft.Office.Interop.Word;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using static System.Net.Mime.MediaTypeNames;
|
||||
|
||||
namespace WordAddInTest2024
|
||||
{
|
||||
|
||||
public class Tools
|
||||
{
|
||||
public static List<string> CutSentences(string para)
|
||||
{
|
||||
para = Regex.Replace(para, @"([。!?\?])([^”’])", "$1\n$2", RegexOptions.Multiline);
|
||||
para = Regex.Replace(para, @"(\.{6})([^”’])", "$1\n$2", RegexOptions.Multiline);
|
||||
para = Regex.Replace(para, @"(\…{2})([^”’])", "$1\n$2", RegexOptions.Multiline);
|
||||
para = Regex.Replace(para, @"([。!?\?][”’])([^,。!?\?])", "$1\n$2", RegexOptions.Multiline);
|
||||
para = para.TrimEnd('\n');
|
||||
return para.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
}
|
||||
|
||||
public static string GetAllText()
|
||||
{
|
||||
// 获取当前文档所有文本
|
||||
string allText = Globals.ThisAddIn.Application.ActiveDocument.Range().Text;
|
||||
List<DocumentText> list = new List<DocumentText>();
|
||||
|
||||
if (allText != null && allText.Length > 0)
|
||||
{
|
||||
string[] splitor = { "\r\n", "\r", "\n" };
|
||||
// 开始分割
|
||||
string[] lines = allText.Split(splitor, StringSplitOptions.RemoveEmptyEntries);
|
||||
MD5 md5 = new MD5CryptoServiceProvider();
|
||||
foreach (string line in lines)
|
||||
{
|
||||
//var sentenceArr = Regex.Split(line, "(?<=[。|.])");
|
||||
var i = 0;
|
||||
//foreach (var sentence in sentenceArr)
|
||||
//{
|
||||
// string text = sentence + (i + 1 == sentenceArr.Length ? "\r\n" : "");
|
||||
// byte[] hash = md5.ComputeHash(Encoding.Default.GetBytes(text));
|
||||
// list.Add(new DocumentText(hash, text));
|
||||
|
||||
//}
|
||||
var matches = Regex.Matches(line, "。");
|
||||
foreach (Match match in matches)
|
||||
{
|
||||
string text = match.Value + (i + 1 == matches.Count ? "\n" : "");
|
||||
byte[] hash = md5.ComputeHash(Encoding.Default.GetBytes(text));
|
||||
list.Add(new DocumentText(hash, text));
|
||||
}
|
||||
}
|
||||
}
|
||||
return GetJSONString(list);
|
||||
}
|
||||
|
||||
public static string GetJSONString(object data)
|
||||
{
|
||||
return JsonConvert.SerializeObject(data, Formatting.Indented);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user