for循环用空格分隔字符串(Java)

时间:2012-04-06 02:11:58

标签: java string spaces

有没有办法创建某种类型的For循环来用空格分隔字符串? 到目前为止,我可以显示一个字符串,并查找它有多少个字符。

import java.util.Scanner;
import java.lang.String;

public class Word{
  public static void main(String args[])
  {
     Scanner scan = new Scanner(System.in);

     int b;

    String word;

    System.out.println ("Enter a word: ");
    word = scan.next();

    b = word.length();

    System.out.println (word);
    System.out.println (b);
  }
}

6 个答案:

答案 0 :(得分:7)

作为Scanner的替代方案,您可以执行以下操作:

String[] parts = line.split(" ");
for (String part : parts) {
    //do something interesting here
}

答案 1 :(得分:1)

在String类中使用split()方法,如下所示:

String line = "a series of words";
String[] words = line.split("\\s+");

它会在String[]中返回line个字,对于上面的例子,它会产生这个:

{"a", "series", "of", "words"}

答案 2 :(得分:0)

你尝试过查看java API吗? 你可以使用很多不同的功能...... 我的头顶分裂会很好地工作,你甚至不必写一个循环

http://docs.oracle.com/javase/6/docs/api/

答案 3 :(得分:0)

您可以使用

String.Split to split the sentence into an array of words.. something like 

string[] words = word.split(" ");
foreach(string s in words)
{
System.out.println(s);
System.out.println("\n");

}

答案 4 :(得分:0)

这是未经测试的,但我觉得这是一次学习练习,所以这应该让你走上正确的道路。在for循环中,您可以将单词的每个字符作为子字符串访问,并在末尾连接一个空格(也可以在单词的末尾)。

string word2 ="";
for (int i = 0; i<word.length-1;i++) {
    word2 = word.substring(i, i+1)+" ";
}

答案 5 :(得分:0)

我正在使用以下代码:

    static void Main(string[] args)
    {
        byte[] inputFile = new byte[] { 0x81, 0x82, 0x83, 0x09, 0xc0, 0x6a, 0xd0 }; 
        IEnumerable<byte[]> ebcdicLines = SplitBytes(inputFile);
        Encoding encoding = CodePagesEncodingProvider.Instance.GetEncoding(1142); // Codepage 1142 is nordic EBCDIC
        IEnumerable<string> lines = ebcdicLines.Select(l => encoding.GetString(l)); // Convert each line to string (unicode)
        foreach (var line in lines)
        {
            Console.WriteLine(line);
        }
    }

    static IEnumerable<byte[]> SplitBytes(byte[] bytes)
    {
        int currentIndex = 0;
        int newlineIndex = Array.IndexOf(bytes, (byte)0x09, currentIndex);
        while (newlineIndex > -1)
        {
            yield return bytes.Skip(currentIndex).Take(newlineIndex - currentIndex).ToArray();
            currentIndex = newlineIndex + 1;
            newlineIndex = Array.IndexOf(bytes, (byte)0x09, currentIndex);
        }
        yield return bytes.Skip(currentIndex).ToArray();
    }