2010-01-11 60 views
0

我需要类似于“awk {print $ 1}”的东西,但对于java。我有一个字符串,与此类似:Java和子字符串

字词1字词2 WORD3 word4的word5 word6

如何,可以串第一个字,从每行?

回答

9
String example = "word1 word2 word3 word4 word5 word6"; 
String firstWord = example.split(" ", 2)[0]; 
+2

只要确保在浏览数据时列表不为空。 :) – 2010-01-11 23:24:09

+0

使用split(“”,1)会更好。它将创建的不必要的字符串数量减少为只有一个不必要的字符串,而不是很多。 – 2010-01-11 23:35:36

+0

更正,谢谢 – 2010-01-11 23:43:33

3
String example = "word1 word2 word3 word4 word5 word6"; 
int indexOf = example.indexOf(" "); 
String firstWord = example.substring(0, indexOf == -1? example.length: indexOf); 
+0

如果该行只有一个单词,则失败。 – 2010-01-11 23:37:18

+0

现在如果你只有一个单词,它会给你一个空的字符串。 – lins314159 2010-01-12 03:33:30

+0

好的,我修复了 – 2010-01-12 08:28:33

4

这里是如果只有一个就行字是不会失败的解决方案。我假设你已经删除了新的行字符,并且该空格是唯一允许的分隔符:

for (String line: lines) 
    { 
     int index = line.indexOf(' '); 
     String firstWord; 
     if (index >= 0) 
     { 
      firstWord = line.substring(0, index); 
     } 
     else 
     { 
      firstWord = line; 
     } 
     System.out.println(firstWord); 
    } 
+0

如果只有一个单词,我的解决方案不会失败......如果split()找不到分隔符,它只会将该字符串保留在数组的第一个元素中。 – 2010-01-11 23:36:35

+0

我的解决方案也不会失败。另外它使用更少的内存,并且不扫描整个字符串。您至少应该添加我建议的优化作为对您答案的评论。 – 2010-01-11 23:39:29

+0

完成,谢谢(我只是回答“这是一个不会失败的解决方案...”) – 2010-01-11 23:42:43