0

我刚刚在一个方法中发现了一段 Java 代码:

if (param.contains("|")) {
  StringTokenizer st = new StringTokenizer(param.toLowerCase().replace(" ", ""), "|");
  if (st.countTokens() > 0) {
    ...
  }
} else {
  return myString.contains(param);
}

在上述情况下可以countTokens小于 1 吗?

4

3 回答 3

5

它可以,如果您尝试标记的字符串为空,否则它总是至少为 1

示例 1:

String myStr = "abcdefg";
StringTokenizer st = new StringTokenizer(myStr, ";");
int tokens = st.countTokens();
System.out.println("Number of tokens: " + tokens);

> "Number of tokens: 1"

示例 2:

String myStr = "";
StringTokenizer st = new StringTokenizer(myStr, ";");
int tokens = st.countTokens();
System.out.println("Number of tokens: " + tokens);

> "Number of tokens: 0"

示例 3:

String myStr = "abc;defg";
StringTokenizer st = new StringTokenizer(myStr, ";");
int tokens = st.countTokens();
System.out.println("Number of tokens: " + tokens);

> "Number of tokens: 2"
于 2013-06-28T08:57:38.717 回答
3

以下回报0

  • new StringTokenizer("", "|").countTokens()
  • new StringTokenizer("|", "|").countTokens()
  • new StringTokenizer("||||", "|").countTokens()

所以在以下情况下countTokens()返回0

  • String空的
  • String仅包含分隔符
于 2013-06-28T08:59:28.467 回答
1

看这个

    String param="";
    StringTokenizer st = new StringTokenizer(param.toLowerCase().replace(" ", ""), "|");
    System.out.println(st.countTokens());

答案是 0(零)

于 2013-06-28T09:02:03.613 回答