0

我在java中有一些字符串,它们来自一个本体文件,它们具有以下格式: <owl:onProperty rdf:resource="http://www.co-ode.org/ontologies/pizza/pizza.owl#WHAT_WE_WANT"/>

我需要创建一个函数来查找特定字符串值是否包含在 WHAT_WE_WANT 中,然后返回字符串 WHAT_WE_WANT。

因此,我在“#”处拆分了 ArrayList 的每一行,然后在拆分行的第二部分中搜索字符串值。现在我所要做的就是摆脱“/>。我试图拆分”符号,但我做不到,因为当我写“””时,编译器无法识别“是我需要的字符串符号. 有任何想法吗?

如果我的单词解释不是很好,这是我的代码:

   if (nextLine.matches(".*" + lookUp + ".*"  ))
    {String lala[]=nextLine.split("#");
    for(int i=0;i<lala.length;i++){
        if(lala[i].matches(".*"+lookUp+".*")){
            String[] temp=lala[i].split( """ ); //<--- doesn't work :/
            System.out.println(temp[0]);
            }
        }
    }
4

3 回答 3

5

您需要转义双引号:

String[] temp = lala[i].split("\"");

我没有检查你的其余代码是否真的有效——特别是,除非你试图使用模式,否则我不会使用正则表达式来查找子字符串——但这应该可以解决你的直接问题。

于 2012-11-30T12:38:16.610 回答
4

这将给出一个编译错误:

String[] temp=lala[i].split( """ );

因为字符串文字格式错误。如果要拆分有双引号字符的位置,则需要转义双引号。

String[] temp=lala[i].split( "\"" );

在字符串文字中,未转义的双引号表示“这是字符串的结尾”。所以编译器会认为你写了一个空字符串 ( "") 后跟一个未终止的字符串文字 ( " );。当它到达行尾时,编译器会抱怨字符串没有终止......因为 Java 字符串文字不能跨越多行。


The stuff that you are trying to decode is OWL ... which means you could (and maybe should) parse it using an OWL parser, and RDF parser or an XML parser ... rather than bashing it with regexes, etcetera.

于 2012-11-30T12:39:29.297 回答
2

You need to write down String[] temp=lala[i].split( "\"" );

the backslash is a snignifier for a special character in your String, as a " or a \ itself.

于 2012-11-30T12:40:08.577 回答