C#入门求助:输出数组时显示System.String[]问题
解决C#数组输出显示System.String[]的问题
嗨,刚入门C#就能动手写Split的代码,已经很棒啦!你遇到的这个问题其实是新手非常常见的小误区,我来帮你理清楚~
问题原因
当你直接用Console.Write(substrings)输出数组时,C#默认会调用数组的ToString()方法,而这个方法的默认实现只会返回数组的类型名称(也就是你看到的System.String[]),并不会帮你遍历输出数组里的每一个元素。
修正方案
要正确输出数组内容,有两种常用的方式:遍历数组逐个输出,或者用string.Join把数组元素拼接成一个字符串再输出。另外我也调整了你的代码顺序,让逻辑更清晰:
namespace stringSplit { class Program { static void Main(string[] args) { string[] separator = { ", ", "; " }; string names = "Peter, John; Andy, , David"; // 第一种Split:保留空元素 string[] substrings = names.Split(separator, StringSplitOptions.None); Console.WriteLine("保留空元素的Split结果:"); // 遍历数组,逐个输出元素 foreach (string item in substrings) { Console.WriteLine(item); } Console.ReadLine(); // 第二种Split:移除空元素 string[] substrings2 = names.Split(separator, StringSplitOptions.RemoveEmptyEntries); Console.WriteLine("\n移除空元素后的Split结果:"); // 用string.Join把数组元素用换行符拼接后输出 Console.WriteLine(string.Join("\n", substrings2)); Console.ReadLine(); } } }
关键改动说明
- 遍历输出:用
foreach循环逐个访问数组里的每个元素,这样就能把每个字符串内容打印出来,包括那些空元素。 - string.Join拼接:这个方法可以把数组里的所有元素用指定的分隔符(这里用了换行符
\n)拼接成一个完整的字符串,一次性输出,代码更简洁。 - 调整代码顺序:原来的代码里先写了
substrings2的定义再输出names,虽然语法没问题,但调整后逻辑更连贯,先处理第一种Split再处理第二种,输出也更清晰。
额外小提示
你原来的代码里Console.Write(names)只是输出了原始的字符串,如果你不需要的话可以删掉,或者改成Console.WriteLine("原始字符串:" + names)来明确标注。
内容的提问来源于stack exchange,提问作者Jack Kelleher
相关产品推荐
相关产品推荐

