拜托,我正在开展一个项目,我必须遍历一个RDF(乌龟格式)并找到一条特定的行,我可以从该行存储该行的前一行。基本上,我要将每个遍历行与字符串进行比较:
" [sswap:主题,d:投资;"
。我尝试了contains()方法和equals()方法,但两者都没有用。我编写了一个简单的Java代码来执行此操作。唯一的问题是即使它到达了所需的行,它也不会进入for循环来执行。这意味着布尔值是假的,但为什么呢?有人可以解释一下我的错误吗?
.
.
.
if(line =="[ a sswap:Subject , d:investment ;"){
do{
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == ';') {
arr.add(line); //an arraylist
}
}
line = it.nextLine(); //loop to the next line
//traverse through the characters in the line
//if the last character is ";"
//store that line.
}while(line!="]");
.
.
.
下面是我试图检查java代码的if语句中的乌龟线。
sswap:operatesOn [
rdf:type sswap:Graph ; sswap:hasMapping [
rdf:type sswap:Subject, d:investment; //trying to capture this..
答案 0 :(得分:0)
由于您要比较的线与不完全匹配
rdf:type sswap:Subject, d:investment; //trying to capture this..
VS
[ a sswap:Subject , d:investment ;
然后使用contains
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#contains(java.lang.CharSequence)
或
indexOf
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)
答案 1 :(得分:-1)
您正在比较具有空格的字符串,使用trim来消除字符串前后的空格,然后使用您要比较的字符串的equals方法;
改变这一点:
line =="[ a sswap:Subject , d:investment ;"
以强>
line.trim().equals("[ a sswap:Subject , d:investment ;")
但是在比较它们之前首先修剪字符串是一个好习惯
答案 2 :(得分:-1)
请将字符串分配给另一个变量,然后在IF语句中进行比较。 等,
String str="[ a sswap:Subject , d:investment ;";
if(line ==str)
OR
if(line.equals(str))