中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現文件篩選讀取并翻譯的自動化工具

發布時間:2023-03-16 09:52:12 來源:億速云 閱讀:119 作者:iii 欄目:開發技術

這篇文章主要介紹了C#如何實現文件篩選讀取并翻譯的自動化工具的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C#如何實現文件篩選讀取并翻譯的自動化工具文章都會有所收獲,下面我們一起來看看吧。

思路

  • 首選讀取項目文件夾下的所有文件路徑

  • 篩選路徑文件后綴.只對.cs或自定義的文件操作讀取

  • 使用正則表達式進行查詢并處理為數組

  • 調用免費的百度翻譯api進行任意類型的翻譯

  • 使用replace進行替換字符串,并保存

準備工作

1,百度智能云領取免費的api接口

C#如何實現文件篩選讀取并翻譯的自動化工具

2,創建應用

C#如何實現文件篩選讀取并翻譯的自動化工具

3,調試api

C#如何實現文件篩選讀取并翻譯的自動化工具

代碼實現

以上準備工作就緒后,代碼就比較容易實現了,完整控制臺代碼如下:

Program.cs

using Batch_translation;
using System.Text.RegularExpressions;

Console.WriteLine("請按下任意鍵進行批量翻譯!");
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)
{
    //業務邏輯
    if (filePath.EndsWith(".cs"))
    {
        BatchTran(filePath);//獲取文件內容并進行轉換操作
    }
}
foreach (var folder in subFolders)
{
    foreach (var filePath in Directory.GetFiles(folder))
    {
        //業務邏輯
        if (filePath.EndsWith(".cs"))
        {
            BatchTran(filePath);//獲取文件內容并進行轉換操作
        }
    }
}

Console.WriteLine("轉化完成");




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

    BaiDuApi baiDuApi = new BaiDuApi("you apikey", "you secretKey");//百度api 初始化
    string content = File.ReadAllText(filePath);//讀取文本
    string pattern = @"("".*[\u4E00-\u9FA5]+.*[\u4E00-\u9FA5]+.*"")";//定義所需要的正則表達式(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)
        // 將修改后的內容寫入到文件中
        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 生成鑒權簽名(Access Token)
        * @return 鑒權簽名信息(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();
        }
 
 
    }
}

關于“C#如何實現文件篩選讀取并翻譯的自動化工具”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C#如何實現文件篩選讀取并翻譯的自動化工具”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴化市| 宜昌市| 唐山市| 康乐县| 特克斯县| 上饶县| 江津市| 工布江达县| 佛学| 大关县| 天长市| 收藏| 龙州县| 宁德市| 子洲县| 镇安县| 大名县| 长垣县| 新疆| 阿荣旗| 正宁县| 昔阳县| 衡南县| 仙居县| 汝城县| 南川市| 石屏县| 神木县| 曲阜市| 孙吴县| 北安市| 邯郸县| 东乡族自治县| 徐水县| 贵溪市| 孟州市| 淮南市| 商丘市| 西城区| 南川市| 嘉黎县|