0

我想比较字符串,但以下代码不起作用。我猜这是因为不兼容,还有其他方法吗?谢谢!

 public class test
 {
    public static void main(String[] args)
    {
       String str1 = "abc def ghi abc ded abc ghi";
       String str2 = "ghi";
       int count = 0;

         String array[] = str1.split("\t");
         for(int i = 0; i < array.length; i++)
         {
           if(array[i].equals(str2))
           {
             count++;
             System.out.println(array[i]);  
             System.out.println(count);     
           } 

       }//for

      }//main

     }//test
4

4 回答 4

4

看起来您正在"\t"(制表符)上拆分,但您的字符串是" "(空格)分隔的。尝试array[] = str1.split(" ");使用字符串。

于 2012-07-22T16:39:28.513 回答
1

如果您不想使用拆分,也可以使用 StringTokenizer 类。http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html我觉得这个最有用。您可以像这样为每个字符串创建一个 StringTokenizer。

StringTokenizer st1 = new StringTokenizer(str1," ");

str1 后面的“”表示要解析的内容。所以如果你想用逗号、破折号、数字、字母等来解析,只要把它放在那里!

然后根据它找到的令牌数量创建一个数组,如下所示:

String[] array1 = new String[st1.countTokens()];

像这样填充数组:

for(int i=0;i<st1.countTokens();i++)
{  
    array1[i]=st1.nextToken(); 
}

您可以用 str2 类似地执行此操作,并以这种方式进行比较!这只是按照您的要求执行此操作的另一种方法。否则,将“/t”更改为“”将与其他答案中所述的拆分一起使用。

希望这可以帮助!

于 2012-07-22T16:56:38.897 回答
1

不要使用 "\t"而是使用" " ,它可以工作......

"\t"仅当您已使用而不是空间时才会有用。"tab"

现在试试这个..

public class T
{
   public static void main(String[] args)
   {
      String str1 = "abc def ghi abc ded abc ghi";
      String str2 = "ghi";
      int count = 0;

        String array[] = str1.split(" ");
        for(int i = 0; i < array.length; i++)
        {
          if(array[i].equals(str2))
          {
            count++;
            System.out.println(array[i]);  
            System.out.println(count);     
          } 

      }//for

     }//main

    }//test
于 2012-07-22T16:40:49.940 回答
1

String 有 contains 方法,它有助于找出项目的出现。在你的情况下 str1.contains(str2)

于 2012-07-22T16:42:44.010 回答