C#中如何将字符串拆分为字符串数组而不使用定界符

3
我想知道为什么没有简单的方法可以做到这一点。
我只想将字符串拆分成字符串数组,而不指定任何分隔符。例如,对于我的输入“Hello”,我希望结果是“H”,“e”,“l”,“l”,“o”,即一个字符串数组。
虽然有一种直接的方法可以将字符串拆分为字符数组(.ToCharArray()),然后可以将其转换为字符串数组,但没有任何一种方法可以直接给我一个字符串数组。
甚至我都不能这样做:
string[] myStringArray = myString.Split(''); // Compile error
2个回答

6
您可以使用一些 Linq 来实现您的目标。
string[] myStringArray = myString.Select(x => x.ToString())
                                 .ToArray();

1
我猜你可以省略ToCharArray()这部分,因为string实现了IEnumerable<char> - Matthew Watson
是的,我知道我们可以这样做。但我只是在想为什么不能用简单的方法来实现呢?或者我们可以传递什么给Split方法。 - Randeep Singh
也许对于框架程序员和工程师来说,这不是优先考虑的事情。关于这个主题,有一篇著名的博客文章来自E.Lippert,它解释了微软需要多少员工来换一个灯泡? - Steve
1
@DotnetRocks 我非常确定这不是人们可能想做的常见事情,因此没有专门的方法也就不足为奇了。 - Matthew Watson

2

如果您需要处理组合字符和代理对,您应该使用StringInfo类来拆分字符串:

var str = "";
var chars = new List<string>();
var tee = StringInfo.GetTextElementEnumerator(str);
while (tee.MoveNext())
    chars.Add(tee.GetTextElement());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接