C#string.split问题与我的代码

时间:2011-11-22 10:36:24

标签: c# string split

我正在编写一些代码来加扰单词。这是第二次尝试使用不同的方法string.split (' ')

我无法从下面的代码中获取我想要的输出。

我要对代码执行的操作是从console.readline获取一个字符串,然后将其拆分并删除任何空格,然后将其输出到console.write。 (测试就是这样,我可以看到for循环工作)

所以

input: 1 2 3 4
should be 
output:
1
2
3
4
....



class Program
{
    static void Main(string[] args)
    {
       string input = Console.ReadLine();
       string[] words = input.Split(' ');
        words = new string[10];

        for (int i = 0; i < words.Length; i++)
        {
            words[i] = Console.ReadLine();
            Console.WriteLine(words[i]);
            Console.WriteLine("test");
        }     
    }
}

}

输入:1 2 3 4 5 ......(仅作为测试)

输出: (空白) 测试

测试

测试

测试

... ect

任何帮助实现拆分工作都会很棒

6 个答案:

答案 0 :(得分:8)

这是问题所在:

string[] words = input.Split(' ');
words = new string[10];

您正在使用Split ...然后通过为变量分配新值来完全忽略结果。总体结果(忽略任何可能的例外)与您刚写的相同:

string[] words = new string[10];

...即10个空引用的数组。

还不清楚为什么你在循环中再次从控制台读取

答案 1 :(得分:3)

   string[] words = input.Split(' ');
    words = new string[10];

您使用空数组立即覆盖words

string.split为您创建数组。删除第二行,您的代码应按预期工作。

答案 2 :(得分:1)

我认为下面的内容可能会正常工作。

class Program
{
 static void Main(string[] args)
 {      
  string input = Console.ReadLine();
  string[] words = new string[10];
  words = input.Split(' ');
  for (int i = 0; i < words.Length; i++)
  {            
   Console.WriteLine(words[i]);
   Console.WriteLine("test");
  }   
  Console.ReadKey();
 }
}

如果您不想在此之前指定数组表单的限制

string[] words = input.Split(' ');

也可以。

答案 3 :(得分:1)

尝试foreach而不是

class Program
{
    static void Main(string[] args)
    {
         string input = Console.ReadLine();
         string[] words = input.Split(' ');

         foreach (string word in words)
         {
              Console.WriteLine(word);
              Console.WriteLine("test");
         }     
    }
}

答案 4 :(得分:0)

取出单词array的第二个init:

 static void Main(string[] args)
    {
       string input = Console.ReadLine();
       string[] words = input.Split(' ');
//        words = new string[10];

        for (int i = 0; i < words.Length; i++)
        {
            words[i] = Console.ReadLine();
            Console.WriteLine(words[i]);
            Console.WriteLine("test");
        }     
    }

答案 5 :(得分:0)

class Program
{
    static void Main(string[] args)
    {
        string input = Console.ReadLine();
        string[] words = input.Split(' ');
       // words = new string[10];

        for (int i = 0; i < words.Length; i++)
        {

            Console.Write(words[i]);

        }
        Console.ReadKey();

    }
 }