编辑代码

//.cs  文件类型,便于外部编辑时使用
// 引用必要的命名空间
using System.Windows.Forms;// 引入Clipboard类所在的命名空间
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Linq;
public class HelloWorld
{
    public static void Main(Quicker.Public.IStepContext context)
    {
        // 从剪贴板读取文本数据
        string inputData = `标题:��️天真呀:#大风呼呼刮个不停
    摘要:#大风呼呼刮个不停 辽宁省-大连市-沙河口区-黑石礁街道-大连百年纪念城雕
    链接:https://www.iesdouyin.com/share/video/7369473366387854602
    时间:2024-05-16 14:00
    来源:抖音
    作者:��️天真呀
    属性:敏感
    涉及关键词:沙河口,辽宁,大连
    转发数:0
    评论数:0
    精准地域:辽宁省,大连市,沙河口区
    信息等级:一般
    舆情类型:其他`;
            Console.WriteLine(inputData);
        
        if (inputData.Contains("纠错敏感"))
        {
            PD_ProcessSelectedCopiedData(inputData);
        }
        else
        {
            PD_ProcessData(inputData);
        }
    }
}

public static void PD_ProcessSelectedCopiedData(string inputData)
{
	// inputData = inputData.Replace("\r\n", "");
	// inputData = Regex.Replace(inputData, @"(\r\n\d{1,2}\r\n|\n\d{1,2}\r\n)", "-");
	// inputData = Regex.Replace(inputData, @"(\r\n\d{1,2}\r\n)", "-");
	inputData = inputData.Replace("\r\n纠错敏感 原创已预警发布于: ", " 发布于:");
	inputData = Regex.Replace(inputData, @"([\r\n]*\d{2}:\d{2}[\r\n]*)", match => " " + match.Value.Trim() + " ");
	inputData = Regex.Replace(inputData, @"([\r\n]*^\s*\d+\s*$[\r\n]*|[\r\n]*^\s*\d+\s*\d+\s*$[\r\n]*|[\r\n]*^\s*\d+\s*\d+\s*\d+\s*$[\r\n]*|[\r\n]*^\s*\d+\s*\d+\s*\d+\s*\d+\s*$[\r\n]*|[\r\n]*^\s*\d+\s*\d+\s*\d+\s*\d+\s*\d+\s*$[\r\n]*|[\r\n]*^\s*\d+\s*\d+\s*\d+\s*\d+\s*\d+\s*\d+\s*$[\r\n]*)", "\r\n>>>", RegexOptions.Multiline);
	inputData = Regex.Replace(inputData, @"(\r\n|^)(.*\d{2}:\d{2}.*)(?=\r\n|$)", "-$2");
	// inputData = inputData.Replace(">>>  ", ">>>");
	inputData = inputData.Replace(". ", ".");
	inputData = inputData.Replace("\r\n\r\n\r\n", "\r\n");
    // 将格式化后的字符串写入剪贴板
    PD_WriteToClipboard(inputData);
}

public static void PD_ProcessData(string inputData)
{
    // 从剪贴板读取文本数据
    // string inputData = Clipboard.GetText();
    inputData = inputData.Replace(":", ":").Replace("发布平台:", "来源:").Replace("发布人:", "作者:").Replace("发布地区:", "精准地域:");
    Dictionary<string, string> extractedFields = PD_ExtractFieldsUntilNewLine(inputData);
    // 将提取的字段值赋给不同的变量
    string abstractText = extractedFields["摘要"];
    string content = extractedFields["内容"];
    string originalPost = extractedFields["原帖"];
    string link = extractedFields["链接"];
    string time = extractedFields["时间"];
    string source = extractedFields["来源"];
    string author = extractedFields["作者"];
    string exactLocation = extractedFields["精准地域"];

    string formattedTime = "";
    string formattedExactLocation = "";
    string detailedReport = "";

    if (!string.IsNullOrEmpty(exactLocation))
    {
        formattedExactLocation = PD_RemoveCommas(exactLocation);
    }

    if (!string.IsNullOrEmpty(time))
    {
        // 转换时间格式
        formattedTime = PD_ConvertTime(time);
    }

    if (string.IsNullOrEmpty(abstractText) || abstractText.Trim() == "")
    {
        abstractText = content;
    	if (string.IsNullOrEmpty(content) || content.Trim() == "")
   	 	{
   	    	abstractText = originalPost;
    		if (string.IsNullOrEmpty(originalPost) || originalPost.Trim() == "")
   	 		{
   	    		abstractText = "视频显示";
    		}
    	}
    }
    
    if (source == "今日头条" || source == "今日头条微头条")
    {
   	    source = "微头条";
    }
    
    if (abstractText.EndsWith(",") || abstractText.EndsWith(",") || abstractText.EndsWith("。") || abstractText.EndsWith("!") || abstractText.EndsWith("!") || abstractText.EndsWith("?") || abstractText.EndsWith("?"))
    {
        detailedReport = formattedTime + ",“" + author + "”" + source + "称," + abstractText + "。" + link;
    }
    else
    {
        detailedReport = formattedTime + ",“" + author + "”" + source + "称," + abstractText + "。" + link;
    }
    
   	detailedReport = detailedReport.Replace("\r\n", "").Replace("辽宁省-", ",定位:").Replace("辽宁省", "").Replace("市-", "市").Replace("区-", "区").Replace("县-", "县");
   	// detailedReport = new string(detailedReport.Distinct().ToArray());
    // 将格式化后的字符串写入剪贴板
        Console.WriteLine(detailedReport);
}

public static Dictionary<string, string> PD_ExtractFieldsUntilNewLine(string input)
{
    var result = new Dictionary<string, string>();
    // string[] fieldsToExtract = { "摘要:", "内容:", "原帖:", "链接:", "时间:", "来源:", "作者:", "精准地域:" };
    string[] fieldsToExtract = { "摘要:", "内容:", "原帖:", "链接:", "时间:", "来源:", "作者:", "精准地域:" };

    foreach (var field in fieldsToExtract)
    {
        string pattern = field + @"(.*?)(?=\n)"; // 使用非贪婪匹配直到第一个换行符
        Match match = Regex.Match(input, pattern, RegexOptions.Singleline);
        if (match.Success)
        {
            string value = match.Groups[1].Value.Trim(); // 去除值两边的空白字符
            result[field.TrimEnd(':')] = value; // 将字段名中的冒号去掉作为字典的键
        }
        else
        {
            result[field.TrimEnd(':')] = string.Empty; // 如果未找到匹配项,则添加空字符串
        }
    }

    return result;
}

// 将数据写入剪贴板
static void PD_WriteToClipboard(string text)
{
	// text = text.Replace("\r\n", "");
    // 将处理后的数据写入剪贴板
    Clipboard.SetText(text);
    //Console.WriteLine("处理后的数据已写入剪贴板。");
}

// 转换时间字符串为格式化时间字符串
static string PD_ConvertTime(string time)
{
    // 将字符串解析为DateTime对象
    DateTime dateTime = DateTime.ParseExact(time, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);

    // 将DateTime对象格式化为包含前导零的字符串
    string formattedWithLeadingZeros = dateTime.ToString("MM月dd日", CultureInfo.CurrentCulture);

    // 去除月份和日期前的前导零
    string formattedTime = RemoveLeadingZeros(formattedWithLeadingZeros);

    return formattedTime;
}

// 去除月份和日期前的前导零
static string RemoveLeadingZeros(string input)
{
    // 使用正则表达式替换月份和日期前的单个前导零
    // return Regex.Replace(input, @"^0([1-9]月)", m => m.Value.Substring(1));
    return Regex.Replace(input, @"^(0)([1-9](日|月))", m => m.Value.Substring(1)).Replace("月0", "月");
	//return Regex.Replace(input, @"(\D)0([1-9](日|号|月))", m => m.Value.Substring(1));  
 
}

// 移除字符串中的逗号
static string PD_RemoveCommas(string input)
{
    // 中文逗号,Unicode: U+3001
    // 英文逗号,Unicode: U+002C
    return input
           .Replace(",", string.Empty) // 替换中文逗号
           .Replace(",", string.Empty); // 替换英文逗号
}