使用.split在Java中拆分字符串数组

时间:2013-10-17 16:03:24

标签: java arrays string split

我已经浏览了类似于我已经在这里的问题,但是没有发现任何对我有用的东西。

基本上我要做的就是逐行读取一个完整的字符串文件,逐行打印,然后逐字逐句打印。我想用.split来创建每个单独字符串的数组。

例如,我的文件是:
胖猫是黑色的 母牛跳过月亮 我来打招呼世界

我已经弄清楚如何读取文件并逐行打印文件,但我无法弄清楚如何逐字打印。这3个中的每一个都有自己的功能,所以我不确定它是否在放置物品的位置起任何作用。

到目前为止,这是我的方法:

static public void printWords( String [ ] arr, int count )
{
    String [] s2 = arr[0].split( " " ); 

    for( int i = 0; i < count; i++)
    {
        System.out.println(  s2 [i] );
    }

    System.out.println();  
}

然而,这给了我一个错误。我换了几件东西,但每次只打印线或停在某一点。我唯一的主要是我的方法调用,这不是问题。如果有人有任何见解,将不胜感激。谢谢!

编辑:

&#34;计数&#34;在我的代码中是我正在阅读的文件中的行数。所以为此,它是3.

我已经调整了代码以获得我需要的东西,但它只打印第一句话。

String [] s2 = arr[0].split( " " );
    for (int j = 0 ; j < count ; j++)
    {

        for( int i = 3; i < s2.length; i++)
        {

        System.out.print(  s2 [i] + " " );
        }
    System.out.println();

    }

}

例如,这仅打印
胖猫是黑色的

然后结束。我正在尝试围绕它构建另一个循环(正如我的代码所示)但它最终只是打印&#34;肥猫是黑色的&#34; 3次而不是移动到文件的下一行。

4 个答案:

答案 0 :(得分:3)

尝试这样的事情:

static public void printWords(String [ ] arr)
{

  for(String s : arr) {
      String[] s2 = s.split(" ");
      for(String results : s2) {
          System.out.println(results);
      }
  }

}

这样你就不需要计数变量了。

答案 1 :(得分:0)

你的for循环停止在count而不是(array.length || count)

可能是一个错误

答案 2 :(得分:0)

如果这是一个家庭作业问题,计数只能用于有意义的行数。您接近解决方案但是您的split语句位于错误的位置。

String数组arr包含文件中的字符串,count是从文件中获取的行数,因此它是通过arr数组的迭代器的限制。你有一个正确的想法,通过使用一个单独的迭代器来遍历s2数组,因为它只包含来自arr的一行中的单词。

试试这个:

static public void printWords( String [ ] arr, int count )
{
    for (int j = 0 ; j < count ; j++)
    {
        String [] s2 = arr[j].split( " " );
        for( int i = 0; i < s2.length; i++)
        {
            System.out.print(  s2 [i] + " " );
        }
        System.out.println();
    }
}

答案 3 :(得分:0)

专门用空格分割。

public void split() {
            ArrayList<String> myArray=new ArrayList<>();
            myArray.add("The fat cat was black");
            myArray.add("The cow jumped over the moon");
            for (String strLine : myArray) {
                String[] strWord = strLine.split("[\\s']");
                for (String s : strWord) {
                    System.out.println(s);
                }
            }

        }

此处[\\s']表示空格,制表符,换行符。