c# - c# 中是否有像 Java 中那样的 splitByCharacterType 方法?

标签 c#

在 Java 中有一个方法 splitByCharacterType它采用一个字符串,例如 0015j8*(,并将其拆分为 "0015","j","8","*","("。是在 c# 中有这样的内置函数吗?如果没有,我将如何构建一个函数来执行此操作?

最佳答案

public static IEnumerable<string> SplitByCharacterType(string input)
{
    if (String.IsNullOrEmpty(input))
        throw new ArgumentNullException(nameof(input));

    StringBuilder segment = new StringBuilder();
    segment.Append(input[0]);
    var current = Char.GetUnicodeCategory(input[0]);

    for (int i = 1; i < input.Length; i++)
    {
        var next = Char.GetUnicodeCategory(input[i]);
        if (next == current)
        {
            segment.Append(input[i]);
        }
        else
        {
            yield return segment.ToString();
            segment.Clear();
            segment.Append(input[i]);
            current = next;
        }
    }
    yield return segment.ToString();
}

用法如下:

string[] split = SplitByCharacterType("0015j8*(").ToArray();

结果是 "0015","j","8","*","("

我建议您将其实现为扩展方法。

关于c# - c# 中是否有像 Java 中那样的 splitByCharacterType 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548048/

相关文章:

c# - 限制或审计接口(interface)的使用

c# - 由于 fatal error ,WinForm 不接受来自 MySql 的用户输入

c# - 如何过滤 asp.net core 项目上的列表

c# - wpf - 更新的依赖属性不触发绑定(bind)

c# - 向移动目标加速/减速并击中它

c# - 一个 Http 响应(希伯来文)字符未进行属性编码的特定站点

c# - 打开现有文件,追加一行

c# - 如何将连续按键发送到程序?

c# - 如果字典键为可为空的十进制,则 Mvc SelectList 不绑定(bind)

c# - 可以(滥用)使用 CoClassAttribute 为接口(interface)提供默认实现吗?