查找带有一系列字符串的引号

时间:2013-05-13 16:24:24

标签: java string equals

所以我有以下字符串:dog“和”cat 我把它拆分成一个名为:array1 with,

的数组

{'d','o','g','',''','c','a',t','“'}

boolean works = false;

for (int i=0; i < array1.length;i++){

    if (array1[i].equals("d"){
        if (array1[i+1].equals("o"){
            if(array1[i+2].equals("g"){
               if (array1[i+3].equals(" "){
                  if (array1[i+4].equals("""){ //does work here
                     if (array1[i+5].equals("c"){
                        if (array1[i+6].equals("a"){
                          if (array1[i+7].equals("t"){
                             works = true;
                          }
                        }
                     }
                  }
               }
            }
        }
    }
}

System.out.println(works);

它在带引号的等号上不起作用。有没有人有任何想法?

5 个答案:

答案 0 :(得分:2)

我会尝试简化您的代码,例如您可以编写

 String s = "dog \"and\" cat";
 boolean works = s.contains("dog \"cat");

这使得作品永远是假的更加明显。

答案 1 :(得分:0)

您的数据类型不明确。

我认为您的array1属于char[]类型。如果是,那么你的代码中应该有==个比较器(注意单引号'x',其中x是你正在测试的char):

if (array1[i] == 'd'){
  ....
}

如果数组的类型为String[],那么你需要在比较中使用反斜杠转义“字符:

if (array1[i+4].equals("\""){ //does work here
   ....
}

答案 2 :(得分:0)

你需要逃避“里面的角色”。就像这样:

(array1[i+4].equals("\"") 

答案 3 :(得分:0)

{'d','o','g',' ','"','c','a',t','"'}这是一个char数组 你需要下面的代码 你不能将字符串与Char相等。

boolean works = false;
for (int i=0; i < array1.length;i++){
if (array1[i]=='d'){
    if (array1[i+1]=='o'){
        if(array1[i+2]=='g'){
           if (array1[i+3]==' '){
              if (array1[i+4]=='"'){ //does work here
                 if (array1[i+5]=='c'){
                    if (array1[i+6]=='a'){
                      if (array1[i+7]=='t'){
                         works = true;`
                      }
                    }
                 }
              }
           }
        }
    }
}

答案 4 :(得分:0)

boolean works = false;
String[] pattern = { "d","o","g"," ","\"","c","a","t","\"" };

for (int i = 0; i < array1.length; i++) {
    // Loop over the items in the pattern array, and check if they match array1
    boolean inner = true;
    for (int j = 0; j < pattern.length; j++) {
        if (i + j >= array1.length) {
            // Don't go beyond the end of array1
            break;
        }
        if (!pattern[j].equals(array1[i+j])) {
            // We found an item that doesn't match.
            inner = false;
            break;
        }
    }
    if (inner) {
        // All items matched
        works = true;
        break;
    }
}

System.out.println(works);