Java 如何使用StringTokenizer在字符串中获取特定值

Java 如何使用StringTokenizer在字符串中获取特定值,java,string,stringtokenizer,Java,String,Stringtokenizer,如你所见,我试图在v=“St.Croix Gate”/>中获取字符串,但由于标记器为每个空格添加了一个新的标记,我只获取输出“Gate”这对我来说很有效: String element = "<tag k=\"addr:street\" v=\"St. Croix gate\"/>"; String searchAtt = "v"; StringTokenizer itr = new StringTokenizer(element); while (i

如你所见,我试图在v=“St.Croix Gate”/>中获取字符串,但由于标记器为每个空格添加了一个新的标记,我只获取输出“Gate”

这对我来说很有效:

    String element = "<tag k=\"addr:street\" v=\"St. Croix gate\"/>";
    String searchAtt = "v";
    StringTokenizer itr = new StringTokenizer(element);
    while (itr.hasMoreTokens()) {
        // split by '='
        String s = itr.nextToken("=");
        // is splited by '=' so the last word is the attribute name
        if (s.endsWith(searchAtt)) {
            // next token is '=' then comes the value of the attribute
            // split it by \"
            itr.nextToken("\"");
            // next token will be the content
            String content = itr.nextToken();
            System.out.println("Searched attribute: " + content);
        }
    }
String元素=”;
字符串searchAtt=“v”;
StringTokenizer itr=新的StringTokenizer(元素);
而(itr.hasMoreTokens()){
//被“=”分割
字符串s=itr.nextToken(“=”);
//被“=”分割,因此最后一个单词是属性名
如果(s.endsWith(searchAtt)){
//下一个标记是“=”然后是属性的值
//将其拆分为\“
itr.nextToken(“\”);
//下一个标记将是内容
字符串内容=itr.nextToken();
System.out.println(“搜索属性:+内容”);
}
}
这对我很有用:

    String element = "<tag k=\"addr:street\" v=\"St. Croix gate\"/>";
    String searchAtt = "v";
    StringTokenizer itr = new StringTokenizer(element);
    while (itr.hasMoreTokens()) {
        // split by '='
        String s = itr.nextToken("=");
        // is splited by '=' so the last word is the attribute name
        if (s.endsWith(searchAtt)) {
            // next token is '=' then comes the value of the attribute
            // split it by \"
            itr.nextToken("\"");
            // next token will be the content
            String content = itr.nextToken();
            System.out.println("Searched attribute: " + content);
        }
    }
String元素=”;
字符串searchAtt=“v”;
StringTokenizer itr=新的StringTokenizer(元素);
而(itr.hasMoreTokens()){
//被“=”分割
字符串s=itr.nextToken(“=”);
//被“=”分割,因此最后一个单词是属性名
如果(s.endsWith(searchAtt)){
//下一个标记是“=”然后是属性的值
//将其拆分为\“
itr.nextToken(“\”);
//下一个标记将是内容
字符串内容=itr.nextToken();
System.out.println(“搜索属性:+内容”);
}
}

首先,请允许我说,由于多种原因,在没有xml解析器的情况下解析xml是一个非常糟糕的主意

但是,如果您只想使用字符串操作来提取
v
的元素,这里有一种方法:

String s = "<tag k=\"addr:street\" v=\"St. Croix gate\"/>";
int vIndex = s.indexOf("v=\"");
int vendQuotesIndex = s.indexOf("\"", vIndex + 3);
System.out.println(s.substring(vIndex + 3, vendQuotesIndex)); // Prints "St. Croix gate"
String s=”“;
int-vIndex=s.indexOf(“v=\”);
int vendQuotesIndex=s.indexOf(“\”,vIndex+3);
System.out.println(s.substring(vIndex+3,vendQuotesIndex));//打印“圣克罗伊门”

首先,请允许我说,由于多种原因,在没有xml解析器的情况下解析xml是一个非常糟糕的主意

但是,如果您只想使用字符串操作来提取
v
的元素,这里有一种方法:

String s = "<tag k=\"addr:street\" v=\"St. Croix gate\"/>";
int vIndex = s.indexOf("v=\"");
int vendQuotesIndex = s.indexOf("\"", vIndex + 3);
System.out.println(s.substring(vIndex + 3, vendQuotesIndex)); // Prints "St. Croix gate"
String s=”“;
int-vIndex=s.indexOf(“v=\”);
int vendQuotesIndex=s.indexOf(“\”,vIndex+3);
System.out.println(s.substring(vIndex+3,vendQuotesIndex));//打印“圣克罗伊门”

您应该使用合适的标记解析器而不是
StringTokenizer
来处理此类数据。尤其是如果所有/大部分数据都是标签。如果数据是XML,则应使用XML解析器。应使用合适的标记解析器而不是
StringTokenizer
处理此类数据。尤其是如果所有/大部分数据都是标签。如果您的数据是XML,您应该使用XML解析器。谢谢!我也找到了另一种方法,汉克斯!我也找到了另一种方法