javascript - 希腊字符串转小写
问题描述
我在将字符串“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;
}
这会将您的字符串小写,然后查找后跟一个或多个空格或出现在字符串末尾的任何“σ”字符(字符串中的最后一个单词可能不会跟空格),然后替换它使用“ς”,保留它找到的任何现有空白。
正则表达式可能最适合这些类型的场景。我猜您可能还想确保添加或删除希腊变音符号,例如 Ρύθμιση --> ΡΥΘΜΙΣΗ 等词的音调。这可以做到,但它更复杂,并且需要更繁重的正则表达式来评估所有情况。
推荐阅读
- python - 基于索引列表的列表中的累积添加
- lines-of-code - CLOC - 如何使用 match-d 计算特定(唯一)目录中的 loc
- javascript - 获取每个请求的出价响应 [prebid.js]
- python - 将 GeoTiff 图像转换为代表 3 维三角形的 Python Shapely 多边形几何图形
- excel - 如何删除excel中数字上的隐藏引号,以防止更改格式
- javascript - 在运行回归测试时不断收到 TypeError: config.suite.split is not a function
- python - 如何检查数据框的列值是否相等并连接列索引值(如果相等)
- c# - 将大数字格式化为字符串 C#
- c - 使用 OpenMP 并行化嵌套循环
- c++ - 如何使我的结构的变量在所有函数中可见?