如何将西里尔字母音译为拉丁文本

2024-01-03

我有一种方法可以将任何拉丁文本(例如英语、法语、德语、波兰语)转换为其 slug 形式,

e.g. Alpha Bravo Charlie => alpha-bravo-charlie

但它不适用于西里尔文文本(例如俄语),所以我想做的是将西里尔文文本音译为拉丁字符,然后将其slugify。

有人有办法做这样的音译吗?无论是通过实际来源还是图书馆。

我正在使用 C# 进行编码,因此 .NET 库就可以工作。或者,如果您有非 C# 代码,我确信我可以转换它。


    public static string Translit(string str)
    {
        string[] lat_up = {"A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Shch", "\"", "Y", "'", "E", "Yu", "Ya"};
        string[] lat_low = {"a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "y", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "shch", "\"", "y", "'", "e", "yu", "ya"};
        string[] rus_up = {"А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я"};
        string[] rus_low = { "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я"};
        for (int i = 0; i <= 32; i++)
        {
            str = str.Replace(rus_up[i],lat_up[i]);
            str = str.Replace(rus_low[i],lat_low[i]);              
        }
        return str;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将西里尔字母音译为拉丁文本 的相关文章

随机推荐

  • python 中是否有与 php 的 $$variables 类似的语法

    python 中是否有与 php 的 variable 类似的语法 我实际上正在尝试的是根据值加载模型 例如 如果值为 Song 我想导入 Song 模块 我知道我可以使用 if 语句或 lambda 但是类似于 php 的 variabl
  • SQL Server 存储过程区分大小写吗?

    我有一个区分大小写的服务器 SQL Latin1 General CP1 CS AS 但数据库不区分大小写 SQL Latin1 General CP1 CI AS 如果我尝试在数据库上创建以下存储过程 则会收到错误 必须声明标量变量 te
  • Xamarin Forms CollectionView TapGestureRecognizer 未在标签上触发

    我有一个 XF 应用程序 定义了以下集合视图 第二个标签有一个不触发的 TapGestureRecognizerDoSomethingInteresting当我点击标签时在模型中 在 Android 上尝试这个 有人可以看看问题是什么吗 工
  • 使用 *apply 函数访问数据框的列名称

    我需要为初学者使用 R apply 函数制作教程 第一次不使用 reshape 或 plyr 包 我试着lapply 因为我读了apply对于数据框不好 这个数据框的一个简单函数 我想使用命名列来访问数据 fDist lt function
  • Powershell 中的标准化文件路径比较

    假设我有以下两条路径 比如说 两者都是有效的 p1 D folder1 p2 D Folder1 我想比较这两条路径的相等性 我期望两条路径是相同的 我尝试了以下两个命令 Resolve Path p1 eq Resolve Path p2
  • 我应该通过引用传递shared_ptr吗? [复制]

    这个问题在这里已经有答案了 传递shared ptr的最佳实践是什么 目前我传递shared ptr函数参数 如下所示 void function1 shared ptr
  • Matplotlib 中颜色图的设置范围

    我正在使用 matplotlib 绘制一个简单的图表 cm plt get cmap Blues nx draw circular G node color White edge color range G number of edges
  • 使用 ASP.net 对文件夹中的图像进行计数

    我想计算文件夹中的图像数量 但它会产生以下错误 Could not find a part of the path c Content slideshow images image 所有图像都位于项目的文件夹中 位于一个Content sl
  • Java 四舍五入

    我怎样才能将 numberGrade 的值向上舍入 这样如果它是 89 5 它就会变为 90 numberGrade 被视为双精度值 但将其设为 int 不会将其向上或向下舍入 public class GradeReporter The
  • 为什么类的常量数据成员需要在构造函数中初始化?

    我想知道为什么类的常量数据成员需要在构造函数中初始化 为什么不在其他地方初始化 这样做和不这样做有什么影响 我也看到只有静态常数积分数据可以在类内部初始化 但不能在类内部初始化任何数据成员 例如 假设下面是我的班级声明 class A in
  • 控制数组 vb.net

    我正在尝试在 VB net 中为购物系统编写一个程序 它将读取数据库并填充表单上的项目 该应用程序在可滚动面板内的标签中显示产品名称等信息 我正在创建对象并在运行时分配文本等值 我在代码中使用循环 如果我使用 vb 6 我将有一个控制数组
  • MongoError:连接未知

    我有一个 mongo 服务器在 localhost 27017 上运行 使用 mongo 控制台我可以在 mongodb 中插入数据 但是当我尝试使用 node js 连接它时 我收到上述错误 以下是使用的代码 var MongoClien
  • Anaconda 中的“基础”(最佳实践)的目的是什么?

    它说这是默认环境 但 不过 您不想将程序放入您的基本环境中 那么我到底应该用它做什么呢 我创建的其他环境是否继承自基础环境 基础环境在哪里conda本身被安装 最好使用Miniconda 并安装all将您想要的东西放入单独的环境中 其他环境
  • 如何让 Perl 正则表达式仅在 $1 < $2 时匹配?

    我无法完全开始工作的部分是条件 因为它总是失败 use Test More tests gt 2 my regex qr d d g1 lt g2 FAIL x like 23 36 regex should match unlike 36
  • 用户/角色管理系统的最佳设计? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是我多次遇到的软件设计问题 但从未找到理想的解决方案 我现在也再次处理它 许多应用程序需要某种形式的用户 角色管理 您有基本用户 这
  • Chrome 中的 SVG“使用”标签已损坏

    SAP AngularJS 和 Angular Route 具有由 svg sprite 制作的基于图标的导航 所以 我有这样的内联代码 div style height 1 width 1 div
  • `uint64_t` 有什么困难? (从“float”转换组装)

    我现在的情况是需要计算类似的东西size t s size t floorf f 也就是说 参数是浮点数 但它有一个整数值 假设floorf f 足够小 可以准确表示 在优化这个的过程中 我发现了一些有趣的事情 以下是一些转换自float到
  • 如何在 Maple 中加载包?

    我想使用一个名为 ESC 椭圆面计算器的包 可以用Maple上传 创建者的指示是 使用字符编码 ISO 8859 1 ISO Latin 1 另存为文本文件 并使用 读取 命令在 Maple 中加载 我在上传到 Maple 并使用此编码保存
  • Android开发:如何以位图形式打开.dcm文件?

    我目前正在尝试制作一个 android dicom 应用程序 以下代码以 通常 图像格式从 res drawable 打开图片 但不适用于 dcm public class BitmapView extends View public Bi
  • 如何将西里尔字母音译为拉丁文本

    我有一种方法可以将任何拉丁文本 例如英语 法语 德语 波兰语 转换为其 slug 形式 e g Alpha Bravo Charlie gt alpha bravo charlie 但它不适用于西里尔文文本 例如俄语 所以我想做的是将西里尔