Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串拆分为字符组的方法_C#_Linq_Parsing - Fatal编程技术网

C# 将字符串拆分为字符组的方法

C# 将字符串拆分为字符组的方法,c#,linq,parsing,C#,Linq,Parsing,为了测试一个通用的马尔可夫链类,我想将一些文本拆分为字符组。首先,只需将元音和辅音分组,最后添加标点符号和其他符号 我正在寻找构建功能的想法,该功能将实现以下功能: in: "hello", out: { "h", "e", "ll", "o" } in: "world", out: { "w", "o", "rld" } in: "Hello world!", out: { "h", "e", "ll", "o", " ", "w", "o", "rld", "!" } 我意识到我可以使用f

为了测试一个通用的马尔可夫链类,我想将一些文本拆分为字符组。首先,只需将元音和辅音分组,最后添加标点符号和其他符号

我正在寻找构建功能的想法,该功能将实现以下功能:

in: "hello", out: { "h", "e", "ll", "o" }
in: "world", out: { "w", "o", "rld" }
in: "Hello world!", out: { "h", "e", "ll", "o", " ", "w", "o", "rld", "!" }
我意识到我可以使用for循环遍历字符数组,并通过比较值来构建每个组,但我想知道是否有更简单和/或更快的方法

我对任何符合以下条件的答案感兴趣:

in: "hello", out: { "h", "e", "ll", "o" }
in: "world", out: { "w", "o", "rld" }
in: "Hello world!", out: { "h", "e", "ll", "o", " ", "w", "o", "rld", "!" }
  • 易于实现和阅读,例如简单的linq查询
  • 演示在其他场景中有用的技术
  • 表现好,
  • 依靠一些不寻常的特征(我想是和第二点有关)

我正在寻找C#解决方案,但我对其他语言的解决方案感兴趣,只要我能翻译它们(即,它们不依赖于特定语言的功能)。

对于您的示例文本,包括元音和辅音组:

Regex.Split("Hello World","(?<=[aeiou])(?=[^aeiou])|(?<=[^aeiou])(?=[aeiou])|(?<= )")

Regex.Split(“Hello World”(?你能详细介绍一下正则表达式正在做什么吗?我的正则表达式fu有点低,我想尝试扩展它以涵盖其他字符类。我本来计划将其作为一个扩展,但这正是我试图了解的内容。感谢您的快速响应!正则表达式希望看看(前一个字符是元音,下一个不是元音)或(前一个字符不是元音,而这一个是元音)或者它是一个空格。IEnumerable更友好。只需编写您自己的CharacterClass方法来返回传入字符的类a,扩展方法将为您分组。答案被接受。这与我的答案类似,但我使用的是“aeiuo”。IndexOf(c)!=-1和/或“aeiuo”。Contains(c)作为我的测试。除了可能的性能差异之外,还有什么理由更喜欢基于字典的检查吗?不完全是。我这样做是为了让它可以轻松返回多种类型的值(返回int而不是bool)。它可以轻松地只是一个65536字节的数组(而且会更快)这将返回一个字节。这取决于您将要转换其中的多少个字节,以及您愿意使用什么内存来获得额外的性能。尽管64k在当今的所有设备上通常都是微不足道的。为什么要否决?我可以做些什么来改进我的问题?