【问题标题】:How to check if Strings all characters in a specific unicode range? [duplicate]如何检查字符串是否包含特定 unicode 范围内的所有字符? [复制]
【发布时间】:2013-07-21 14:45:47
【问题描述】:

你好,例如我有一个String in sinhala unicode

 String variable = "සහ"; - Correct String
 String variable = "XසහS"; - Incorrect String

我想验证 所有字符 字符串是否在属于该特定语言的特定 unicode 范围内。

有实现这个的想法吗?

【问题讨论】:

  • @Patrick 感谢更新
  • @Patrick:不正确。 var 是一个 contextual 关键字。因此,var 作为变量名仍然有效。否则,当var 被引入该语言时,它可能会破坏代码。
  • 请注意,检查字符串中的所有字符是否都在指定的Unicode块范围内与确定字符串是否格式正确不同。例如,僧伽罗语中的从属元音需要跟随辅音字符。

标签: c#


【解决方案1】:
static bool Validate(string s, char max, char min)
{
    for (int i = 0; i < s.Length; i++)
        if (s[i] > max || s[i] < min)
            return false;
    return true;
}

【讨论】:

  • 我认为问题在于确定minmax。然后还有另一个问题,它不一定是 single 范围。
【解决方案2】:

鬼单行功能:

static bool Validate(string s, char max, char min) {
    return s.All(c => min <= c && c <= max);
}

【讨论】:

  • 首先,您的答案应该只是对原件的评论或编辑。如果你打算在一行中完成,你真的应该说!s.Any(c =&gt; c &gt; max || c &lt; min)s.All(c =&gt; min &lt;= c &amp;&amp; c &lt;= max)。您不想知道范围外字符数的 count,您想知道是否有 any 个字符超出范围或是否有 all 个字符在范围内。但是,这个问题是not that simple
  • 您使用Any()All() 是对的,我已经更新了答案。另外,请参阅unicode.org/charts/PDF/U0D80.pdf - 僧伽罗语脚本于 1999 年 9 月随着 3.0 版的发布而被添加到 Unicode 标准中。僧伽罗语的 Unicode 块是 U+0D80–U+0DFF。灰色区域表示未分配的代码点。 (通过维基百科)
猜你喜欢
  • 2021-12-05
  • 2019-06-07
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多