javascript - 希腊字符串转小写

标签 javascript c# string cultureinfo

我在将字符串“SΨZΣ”转换为小写时遇到了一些麻烦。

在 C# 中,.ToLower() 和 .ToLowerInvariant() 都给我“sψzσ”作为结果。 而 javascript 返回“sψzς”。

经过一些研究,我认为只有当字符“Σ”不在单词的末尾时才应将其翻译为“σ”,在这种情况下,它应该变成“ς”——所以javascript 版本很好。 事实上,我在使用 C# 字符串调用外部 API 时遇到错误,而 js 字符串工作正常。

关于如何使 C# 正确降低字符串的任何想法?

最佳答案

不幸的是,在 C# 中没有默认的方法来做到这一点;起初当我看到你的问题时,我猜想这可能是设置文化可以解决的问题,比如:

string s = "SΨZΣ".ToLower(new CultureInfo("el-GR"));

但不幸的是,这不起作用。这个问题比较复杂,因此需要我们自己制定解决方案:

    public string GreekToLower(string s)
    {
        string lowerString = s.ToLower();

        // Matches any 'σ' followed by whitespace or end of string
        string returnString = Regex.Replace(lowerString, "σ(\\s+|$)", "ς$1");
        return returnString;
    }

这会将您的字符串小写,然后查找后跟一个或多个空格或出现在字符串末尾的任何“σ”字符(字符串中的最后一个单词后面可能不会跟空格)和然后将其替换为“ς”,保留它找到的任何现有空白。

正则表达式可能最适合这些类型的场景。我猜您可能还想确保添加或删除希腊语变音符号,例如 Ρύθμιση --> ΡΥΘΜΙΣΗ 等词的音调。这是可以做到的,但它要复杂得多,并且需要更繁重的正则表达式来评估所有情况。

关于javascript - 希腊字符串转小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53684518/

相关文章:

javascript - 如何使用 react-router-dom v6 渲染具有不同布局/元素的组件

c# - 如何在 WinForm 应用程序中检测 Ctrl - 正斜杠

string - Groovy 多行字符串有什么问题?

javascript - 在 javascript 中向 olleh dlrow 返回 hello world

javascript - 日期对象上的代理

javascript - 如何在 Javascript 中读取 asp.net 中的行

c# - 组合应用程序配置的方法(例如 PRISM、MEF)

C# decimal.Parse 行为

c - 在没有显式字符串复制的情况下,char 字符串和 wchar_t 字符串之间的函数逻辑重用?

javascript - ExtJs 拖放树,获取放置位置