StringTokenizer countTokens可以为零吗?

And*_*mer 0 java stringtokenizer

我刚在一个方法中找到了一段Java代码:

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

能否countTokens在上述情况下永远小于1?

JRE*_*REN 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"
Run Code Online (Sandbox Code Playgroud)

例2:

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

> "Number of tokens: 0"
Run Code Online (Sandbox Code Playgroud)

例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"
Run Code Online (Sandbox Code Playgroud)