最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)文件篩選讀取并翻譯的自動化工具

 更新時間:2023年03月16日 08:33:56   作者:CoolDog;  
這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)文件篩選及讀取內(nèi)容,并翻譯的自動化工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

背景

我們項目一開始的所有提示都是中文,后來要做國際化。發(fā)現(xiàn)項目中的帶雙引號的中文居然有 2.3 w 多條?。?!簡直讓人欲哭無淚...

如果使用人工改的話,首先不說正確率了。光是效率都是難難難。所以發(fā)揮了自己的才能寫了一個自動化工具。

思路

  • 首選讀取項目文件夾下的所有文件路徑
  • 篩選路徑文件后綴.只對.cs或自定義的文件操作讀取
  • 使用正則表達(dá)式進(jìn)行查詢并處理為數(shù)組
  • 調(diào)用免費的百度翻譯api進(jìn)行任意類型的翻譯
  • 使用replace進(jìn)行替換字符串,并保存

準(zhǔn)備工作

1,百度智能云領(lǐng)取免費的api接口

2,創(chuàng)建應(yīng)用

3,調(diào)試api

代碼實現(xiàn)

以上準(zhǔn)備工作就緒后,代碼就比較容易實現(xiàn)了,完整控制臺代碼如下:

Program.cs

using Batch_translation;
using System.Text.RegularExpressions;

Console.WriteLine("請按下任意鍵進(jìn)行批量翻譯!");
Console.ReadLine();



string strFolderPath = "you FolderPath";//你的項目文件夾路徑
string[] files = Directory.GetFiles(strFolderPath, "*", SearchOption.AllDirectories); // 獲取文件夾下所有文件路徑,包括子文件夾
string[] subFolders = Directory.GetDirectories(strFolderPath, "*", SearchOption.AllDirectories); // 獲取所有子文件夾路徑

foreach (var filePath in files)
{
    //業(yè)務(wù)邏輯
    if (filePath.EndsWith(".cs"))
    {
        BatchTran(filePath);//獲取文件內(nèi)容并進(jìn)行轉(zhuǎn)換操作
    }
}
foreach (var folder in subFolders)
{
    foreach (var filePath in Directory.GetFiles(folder))
    {
        //業(yè)務(wù)邏輯
        if (filePath.EndsWith(".cs"))
        {
            BatchTran(filePath);//獲取文件內(nèi)容并進(jìn)行轉(zhuǎn)換操作
        }
    }
}

Console.WriteLine("轉(zhuǎn)化完成");




void BatchTran(string filePath)
{
    /* 核心邏輯:
    首選讀取項目文件夾下的所有文件路徑
    篩選路徑文件后綴.只對.cs或自定義的文件操作讀取
    使用正則表達(dá)式進(jìn)行查詢并處理為數(shù)組
    調(diào)用免費的百度翻譯api進(jìn)行任意類型的翻譯
    使用replace進(jìn)行替換字符串,并保存
     */

    BaiDuApi baiDuApi = new BaiDuApi("you apikey", "you secretKey");//百度api 初始化
    string content = File.ReadAllText(filePath);//讀取文本
    string pattern = @"("".*[\u4E00-\u9FA5]+.*[\u4E00-\u9FA5]+.*"")";//定義所需要的正則表達(dá)式(ps:此正則表示查詢英文雙引號下的中文)
    Regex myRegex = new Regex(pattern);
    MatchCollection collection = myRegex.Matches(content);
    foreach (Match match in collection)
    {
        var oldStr = "";
        oldStr = match.Value;//.Substring(0, match.Value.Length - 1)

        var newStr = baiDuApi.Translate(oldStr);
        if (!string.IsNullOrEmpty(newStr))
            content = content.Replace(oldStr, newStr);
    }
    if (collection.Count > 0)
        // 將修改后的內(nèi)容寫入到文件中
        File.WriteAllText(filePath, content);
}

BaiDuApi.cs

using System;
using System.IO;
using Newtonsoft.Json;
using RestSharp;
 
namespace Batch_translation
{
    public class BaiDuApi
    {
 
        private readonly string apiKey;
        private readonly string secretKey;
        public BaiDuApi(string apiKey, string secretKey)
        {
            this.apiKey = apiKey;
            this.secretKey = secretKey;
        }
 
        public string Translate(string sourceText)
        {
            var token = GetAccessToken(apiKey, secretKey);
            if (token == "")
                return "";
            var client = new RestClient($"https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token={token}");
            var request = new RestRequest("", Method.Post);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
 
            // 定義一個匿名類型對象
            var data = new { from = "zh", to = "en", q = sourceText };
            // 將對象序列化成 JSON 字符串
            string body = JsonConvert.SerializeObject(data);
            request.AddParameter("application/json", body, ParameterType.RequestBody);
            var response = client.Execute(request);
            if (response.Content == null)
            {
                return "";
            }
            var dataResult = JsonConvert.DeserializeObject<BaiDuMode>(response.Content);
            if (dataResult.result != null)
            {
                if (dataResult.result.trans_result != null && dataResult.result.trans_result.Count > 0)
                {
                    return dataResult.result.trans_result[0].dst;
                }
            }
            return sourceText;
        }
 
 
        /**
        * 使用 AK,SK 生成鑒權(quán)簽名(Access Token)
        * @return 鑒權(quán)簽名信息(Access Token)
        */
        static string GetAccessToken(string API_KEY, string SECRET_KEY)
        {
            var client = new RestClient($"https://aip.baidubce.com/oauth/2.0/token");
            var request = new RestRequest("", Method.Post);
            request.AddParameter("grant_type", "client_credentials");
            request.AddParameter("client_id", API_KEY);
            request.AddParameter("client_secret", SECRET_KEY);
            var response = client.Execute(request);
            Console.WriteLine(response.Content);
            if (response.Content == null)
                return "";
            var result = JsonConvert.DeserializeObject<dynamic>(response.Content);
            return result.access_token.ToString();
        }
 
 
    }
}

到此這篇關(guān)于C#實現(xiàn)文件篩選讀取并翻譯的自動化工具的文章就介紹到這了,更多相關(guān)C#文件篩選讀取翻譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#自動判斷Excel版本使用不同的連接字符串

    C#自動判斷Excel版本使用不同的連接字符串

    這篇文章主要介紹了C#自動判斷Excel版本使用不同的連接字符串,本文重點在不同版本的連接字符串介紹,需要的朋友可以參考下
    2015-06-06
  • Unity利用XML制作一個簡易的登錄系統(tǒng)

    Unity利用XML制作一個簡易的登錄系統(tǒng)

    這篇文章主要介紹了如何在Unity中利用XML文件制作一個簡易的登錄系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-03-03
  • C#實現(xiàn)Check Password和鎖定輸錯密碼鎖定賬戶功能

    C#實現(xiàn)Check Password和鎖定輸錯密碼鎖定賬戶功能

    C#實現(xiàn)的Check Password,并根據(jù)輸錯密碼的次數(shù)分情況鎖定賬戶:如果輸入錯誤3次,登錄賬戶鎖定5分鐘并提示X點X分后重試登錄,具體實現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧
    2020-01-01
  • C#使用AutoMapper進(jìn)行對象映射的示例代碼

    C#使用AutoMapper進(jìn)行對象映射的示例代碼

    AutoMapper 是一個對象到對象映射的庫,可以簡化 DTO (Data Transfer Objects) 和實體類之間的轉(zhuǎn)換,在大型應(yīng)用程序中,通常需要將業(yè)務(wù)實體映射到視圖模型或 DTO 中,本文將詳細(xì)介紹如何在 C# 項目中使用 AutoMapper,包括安裝、配置、以及示例代碼
    2024-08-08
  • C#中常用窗口特效的實現(xiàn)代碼

    C#中常用窗口特效的實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C#中三個常用的窗口特效的實現(xiàn),分別是淡入淡出、變大變小、緩升緩降,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C#影院售票系統(tǒng)畢業(yè)設(shè)計(2)

    C#影院售票系統(tǒng)畢業(yè)設(shè)計(2)

    這篇文章主要介紹了C#影院售票系統(tǒng)畢業(yè)設(shè)計,介紹了電影院座位的動態(tài)繪制、電影信息綁定到窗體中如何展現(xiàn)出來,需要的朋友可以參考下
    2015-11-11
  • 淺談C#在網(wǎng)絡(luò)波動時防重復(fù)提交的方法

    淺談C#在網(wǎng)絡(luò)波動時防重復(fù)提交的方法

    這篇文章主要介紹了淺談C#在網(wǎng)絡(luò)波動時防重復(fù)提交的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C#使用Task實現(xiàn)執(zhí)行并行任務(wù)的原理的示例詳解

    C#使用Task實現(xiàn)執(zhí)行并行任務(wù)的原理的示例詳解

    Task是一個表示異步操作的類,它提供了一種簡單、輕量級的方式來創(chuàng)建多線程應(yīng)用程序。本文就來和大家聊聊在C#中如何使用Task執(zhí)行并行任務(wù)吧
    2023-04-04
  • C# winform程序讀取文本中的值實例講解

    C# winform程序讀取文本中的值實例講解

    在本篇文章中小編給大家分享了關(guān)于C# winform程序讀取文本中的值的相關(guān)知識點,有興趣的朋友們學(xué)習(xí)下。
    2019-06-06
  • C#在Excel表格中插入、編輯和刪除批注

    C#在Excel表格中插入、編輯和刪除批注

    這篇文章主要為大家詳細(xì)介紹了C#如何在Excel表格中插入、編輯和刪除批注,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評論

桃江县| 平度市| 九江市| 行唐县| 双牌县| 尼木县| 抚松县| 侯马市| 突泉县| 宁都县| 靖江市| 宁城县| 桓仁| 荃湾区| 河津市| 中西区| 三原县| 托克托县| 额济纳旗| 和顺县| 库车县| 桐梓县| 德兴市| 武陟县| 鹿泉市| 关岭| 孝感市| 库伦旗| 康马县| 汨罗市| 五原县| 湄潭县| 敖汉旗| 东安县| 彭阳县| 方正县| 江安县| 伊金霍洛旗| 大关县| 临湘市| 乌鲁木齐县|