有问题的程序是一个电话簿应用程序,它采用格式化的用户输入(例如ADD SampleName;SamplePhoneNumber;SampleCategory
)。
这个方法应该把它分成四个String
s:
第一个分隔符是空格,另外两个是;
。当我使用以下代码时,由于某种原因,包含空格作为SampleName
的前缀。我不知道为什么会这样,或者如何以实际的方式纠正这个问题。我习惯了C ++,而我只是在学习Java。任何建议都表示赞赏。
以下是方法:
public static Vector tokenize(String com)
{
Scanner scanner = new Scanner(com);
Vector vs = new Vector();
String s;
while(scanner.hasNext())
{
if(vs.size()==0)
{
scanner.useDelimiter("\\p{javaWhitespace}+");
s = scanner.next(); // Sets the first delimiter to ' '
scanner.useDelimiter("[;]");
}
else
{
scanner.useDelimiter("[;]");
s = scanner.next(); // Sets all other delimiters as ';'
}
vs.add(s); // Adds the string s to the vector of strings vs
}
return vs;
}
答案 0 :(得分:1)
一旦切换分隔符,似乎保留了额外的空格。您可以通过使用相同的分隔符轻松解决此问题:
public static Vector tokenize(final String com) {
Scanner scanner = new Scanner(com);
scanner.useDelimiter("[;\\p{javaWhitespace}]+");
Vector vs = new Vector();
while (scanner.hasNext()) {
vs.add(scanner.next()); // Adds the string to the vector of strings vs
}
return vs;
}
答案 1 :(得分:0)
或者
public static Vector tokenize(final String com) {
String[] tokens = com.split(" |;");
Vector<String> vs = new Vector<String>(tokens.length);
for (String s : tokens) {
vs.add(s);
}
return vs;
}