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在当今的所有设备上通常都是微不足道的。为什么要否决?我可以做些什么来改进我的问题?