2013-03-18 174 views
4

我似乎无法找到此方法中for循环所需的语法。我正在寻找遍历字符串suit中的单词。For循环搜索字符串中的字

编辑:有一点需要注意的是,cardArray是一个ArrayList。

public String getSuit(int card){ 
    String suit = cardArray.get(card); 
    for (String word : suit){ 
     if (word.contains("SPADES")){ 
      suit = "SPADES";    
     } 
    } 
    return suit; 
} 
+1

'西装

public String getSuit(int card){ String suit = cardArray.get(card); if (suit.contains("SPADES")){ cardArray.set(card, "SPADES"); } return suit; } 

。 split(“\ u0020”);'给你一组单词。 – 2013-03-18 15:40:17

+0

为什么这么unicode? ;) – 2013-03-18 15:40:35

+0

我发现它更可靠。 – 2013-03-18 15:42:18

回答

5

你可以使用

for (String word : suit.split(" ")) { 

拆就每space character (U+0020)

或者:

for (String word : suit.split("\\s+")) { 

此分割上空白字符的每个序列(这包括制表符,换行符等)。

2

尝试拆分上空白的字符串:

String suit = cardArray.get(card); 
for (String word : suit.split("\\s+")){ 
    if (word.contains("SPADES")){ 
     suit = "SPADES";    
    } 
} 
0

为什么不使用枚举的西装,并把它添加到您的卡类或一些更面向对象的?你甚至可以拥有一张抽象类卡或一张接口卡,它可以让你在卡片实例本身内部添加所需的任何逻辑,而不是迭代进行字符串比较。

但是:String.split(String regex)应该工作,只要选择合适的regular expression

+0

我对这个任务使用了一个ArrayList,所以我可以在Java中使用Arrays做一些练习。 – Bob 2013-03-18 15:47:48

+0

我想我只是提供一个单独的方法,可能在未来有所帮助。例如,你可以使用一个ArrayList ,其中Card有一个枚举enum和一个表示可能是另一个枚举类型(ace,2,3等)的类型的东西。字符串比较往往比较慢。 – 2013-03-18 15:51:25

+0

是的,当我寻找途径时,我看到枚举是一种可行的方法。无论如何,我不会在程序中调用这个方法,这只是我必须填写接口的一个要求,因为我已经创建了52个卡,其中包含一个嵌套的for循环,它们的套装以及列表中的字符串排列在arraylist中。 – Bob 2013-03-18 15:56:22

0

如果你想要做的是替换含有“SPADES”字符串:如果要分割字符串suit某些其他原因再看看其他的答案