[英]unwanted behaviour in StringTokenizer
I have a String Result = "FFF-556-GHH-788;DDR4TG441"
.我有一个字符串
Result = "FFF-556-GHH-788;DDR4TG441"
。 I use StringTokenizer to split the string on delimeter ';'.我使用 StringTokenizer 分割分隔符';'上的字符串。 But the 2 sub-Strings I get are
1->"FFF-556-GHH-788"
and 2->"DDR4TG441DDR4TG441DDR4TG441"
.但是我得到的 2 个子字符串是
1->"FFF-556-GHH-788"
和2->"DDR4TG441DDR4TG441DDR4TG441"
。 Why is String 2 repeated 3 times?为什么字符串 2 重复 3 次?
code: main:代码:主要:
datum = parseResult(Result);
fun:乐趣:
public QRResultData parseResult(String Result)
{
QRResultData data = new QRResultData();
StringTokenizer multiTokenizer = new StringTokenizer(Result, ";");
if(multiTokenizer.hasMoreTokens())
{
data.busNumber = multiTokenizer.nextToken();
}
if(multiTokenizer.hasMoreTokens())
{
data.seatNumber = multiTokenizer.nextToken();
}
return data;
}
Odd, when I ran your code it works.奇怪,当我运行你的代码时,它可以工作。 Can you verify that the code in your question matches the code in production?
您能否验证您的问题中的代码与生产中的代码是否匹配?
import java.util.StringTokenizer;
public class So66650493 {
public static void main(String[] args) {
String Result = "FFF-556-GHH-788;DDR4TG441";
final QRResultData datum = new So66650493().parseResult(Result);
System.out.println("datum = " + datum);
// datum = QRResultData{busNumber='FFF-556-GHH-788', seatNumber='DDR4TG441'}
if ("FFF-556-GHH-788".equals(datum.busNumber)
&& "DDR4TG441".equals(datum.seatNumber)) {
System.out.println("SUCCESS parsed correctly");
} else {
System.out.println("FAIL");
}
}
public QRResultData parseResult(String Result) {
QRResultData data = new QRResultData();
StringTokenizer multiTokenizer = new StringTokenizer(Result, ";");
if (multiTokenizer.hasMoreTokens()) {
data.busNumber = multiTokenizer.nextToken();
}
if (multiTokenizer.hasMoreTokens()) {
data.seatNumber = multiTokenizer.nextToken();
}
return data;
}
private static class QRResultData {
String busNumber;
String seatNumber;
@Override
public String toString() {
return "QRResultData{" +
"busNumber='" + busNumber + '\'' +
", seatNumber='" + seatNumber + '\'' +
'}';
}
}
}
My earlier suggestion to replace StringTokenizer with String.split will not help you much.我之前用 String.split 替换 StringTokenizer 的建议对你没有多大帮助。 But it would make your code slightly more legible.
但这会使您的代码更加清晰易读。
public QRResultData parseResult(String Result) {
QRResultData data = new QRResultData();
String[] split = Result.split(";");
data.busNumber = split[0];
if (split.length > 1) {
data.seatNumber = split[1];
}
return data;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.