Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java StringTokenizer问题-新手_Java - Fatal编程技术网

Java StringTokenizer问题-新手

Java StringTokenizer问题-新手,java,Java,我知道我在这里可能非常愚蠢,但有人能解释我的问题吗?我正在尝试从包含html的字符串中提取标题 public static void main(String args[]) { System.out.println(getTitle("<title>this is it</title>")); } public static String getTitle(String a) { StringTokenizer token = new StringToke

我知道我在这里可能非常愚蠢,但有人能解释我的问题吗?我正在尝试从包含html的字符串中提取标题

 public static void main(String args[]) {
  System.out.println(getTitle("<title>this is it</title>"));
 }

 public static String getTitle(String a) {
  StringTokenizer token = new StringTokenizer(a, "<title>", false);
  return token.nextToken("</title>");
 }
publicstaticvoidmain(字符串参数[]){
System.out.println(getTitle(“就是它”);
}
公共静态字符串getTitle(字符串a){
StringTokenizer令牌=新的StringTokenizer(a,“,false);
返回令牌。nextToken(“”);
}
一直返回“h”,我不知道为什么!我是不是太天真了


干杯

我想你的问题就在这里(引自,正文由我加粗):

“可以在创建时或在每个标记的基础上指定分隔符集(分隔标记的字符)。”

也就是说,分隔符不是字符串,而是一组字符。当您将
作为第二个参数传递时,您会告诉您的标记器分隔符是
中的任何字符。因此,标记器会尽职尽责地跳过第一个标记中的所有字符,然后
t
,并返回
h
,因为这不在您给它的标记集中,而下一个字符(
e
)是

因此,
StringTokenizer
并不是您需要的。另请注意API文件中的这一备注:

StringTokenizer
是一个遗留类,出于兼容性原因保留该类,尽管在新代码中不鼓励使用它。建议寻求此功能的任何人使用
String
split
方法或
java.util.regex
包。”


或者使用第三方库,正如其他人所指出的。

我认为您的问题就在这里(引用自,正文由我粗体):

“可以在创建时或在每个标记的基础上指定分隔符集(分隔标记的字符)。”

也就是说,分隔符不是字符串,而是一组字符。当您将
作为第二个参数传递时,您会告诉您的标记器分隔符是
中的任何字符。因此,标记器会尽职尽责地跳过第一个标记中的所有字符,然后
t
,并返回
h
,因为这不在您给它的标记集中,而下一个字符(
e
)是

因此,
StringTokenizer
并不是您需要的。另请注意API文件中的这一备注:

StringTokenizer
是一个遗留类,出于兼容性原因保留该类,尽管在新代码中不鼓励使用它。建议寻求此功能的任何人使用
String
split
方法或
java.util.regex
包。”


或者使用第三方库,正如其他人所指出的。

您指定的分隔符是“”,它是空字符串。字符串开头的“t”和“h”之间有一个空字符串,因此nextToken返回“t”。
这是正常的,并按规定工作。请参见

您指定的分隔符是“”,它是空字符串。字符串开头的“t”和“h”之间有一个空字符串,因此nextToken返回“t”。
这是正常的,并按规定工作。请参见

我不确定StringTokenizer是否是在您的场景中使用的最佳类。也许您可以使用String.subString(int,int)来解决您的任务。正如BearsWillEatYou所指出的,如果您想进行更复杂的HTML解析,请使用一些第三方库

public static void main(String args[]) {
    System.out.println(getTitle("<title>this is it</title>"));
}

public static String getTitle(String a) {
    return a.substring(a.indexOf("<title>") + "<title>".length(), a.indexOf("</title>"))
}
publicstaticvoidmain(字符串参数[]){
System.out.println(getTitle(“就是它”);
}
公共静态字符串getTitle(字符串a){
返回a.substring(a.indexOf(“”+“”).length(),a.indexOf(“”)
}

我不确定StringTokenizer是否是在您的场景中使用的最佳类。也许您可以使用String.subString(int,int)来解决您的任务。正如BearsWillEatYou所指出的,如果您想进行更复杂的HTML解析,请使用一些第三方库

public static void main(String args[]) {
    System.out.println(getTitle("<title>this is it</title>"));
}

public static String getTitle(String a) {
    return a.substring(a.indexOf("<title>") + "<title>".length(), a.indexOf("</title>"))
}
publicstaticvoidmain(字符串参数[]){
System.out.println(getTitle(“就是它”);
}
公共静态字符串getTitle(字符串a){
返回a.substring(a.indexOf(“”+“”).length(),a.indexOf(“”)
}

不能以这种方式使用StringTokenizer。参见javadoc


delims
参数包含字符串中被视为分隔符的字符集。因此,这里有“您不能以这种方式使用StringTokenizer


delims
参数包含字符串中被视为分隔符的字符集。因此,在这里,如果要解析HTML,最好的方法可能是“


我建议您使用这个特定于域的库,因为它还可以让您在需要时方便地扩展应用程序的功能。或者,如果另一个应用也在解析HTML,请帮助您使用该应用。

如果您正在解析HTML,最好的方法可能是


我建议您使用这个特定于域的库,因为它还可以让您在需要时方便地扩展应用程序的功能。或者,如果另一个应用程序也在解析HTML,则可以帮助您使用该应用程序。

如果您尝试进行的不是非常简单的HTML解析,只需使用第三方库即可。基本上,我需要做的就是提取页面上的标题和链接。。你能推荐一些简单的库让我这样做吗?谢谢如果你想做的不是非常简单的HTML解析,那就使用第三方库吧。基本上我需要做的就是提取页面上的标题和链接。。你能推荐一些简单的库让我这样做吗?谢谢