Java 如何分割用户';是用代币输入的吗?
我需要你的建议来做点什么。。。我想采取用户的输入行,因为我已经在我的程序与扫描仪。。。但我想将每个命令(单词)拆分为令牌。。。。我不知道该怎么做,直到现在我还在玩substring,但是如果用户例如按下两次空格键,一切都是错误的 例如:Java 如何分割用户';是用代币输入的吗?,java,user-input,token,java.util.scanner,Java,User Input,Token,Java.util.scanner,我需要你的建议来做点什么。。。我想采取用户的输入行,因为我已经在我的程序与扫描仪。。。但我想将每个命令(单词)拆分为令牌。。。。我不知道该怎么做,直到现在我还在玩substring,但是如果用户例如按下两次空格键,一切都是错误的 例如: 请插入命令:我20岁了 使用substring或.split(“”),它将运行,但请考虑: 请插入命令:我20岁了 这就是为什么我需要你的建议。。。。问题是如何使用令牌分割用户的输入。好吧,在将字符串行分割为令牌之前,需要对其进行规范化。最简单的方法是删除重复的
请插入命令:我20岁了 使用substring或.split(“”),它将运行,但请考虑: 请插入命令:我20岁了
这就是为什么我需要你的建议。。。。问题是如何使用令牌分割用户的输入。好吧,在将字符串行分割为令牌之前,需要对其进行规范化。最简单的方法是删除重复的空白字符:
line = line.replaceAll("\\s+", " ");
(这也会将所有制表符替换为一个
”
)。嗯,在将字符串行拆分为标记之前,您需要对其进行规范化。最简单的方法是删除重复的空白字符:
line = line.replaceAll("\\s+", " ");
(这也会将所有选项卡替换为单个”
)。使用该类。从API:
“[它]允许应用程序将字符串拆分为令牌…a”
StringTokenizer对象在内部维护
要标记的字符串。“
API中的以下示例代码将为您提供一个想法:
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
它产生以下结果:
this
is
a
test
使用该类。从API:
“[它]允许应用程序将字符串拆分为令牌…a”
StringTokenizer对象在内部维护
要标记的字符串。“
API中的以下示例代码将为您提供一个想法:
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
它产生以下结果:
this
is
a
test
好的,我编写的代码将要求您插入一个命令,然后它将接受您的命令,然后将其拆分为任意数量的空格(由于正则表达式)。然后将这些单词、数字、语音标记等保存为标记。然后可以操纵for循环中的每个单词
import java.util.Scanner;
public class CommandReaderProgram{
public static void main(String[] args){
Scanner userInput = new Scanner(System.in);
System.out.println("Please insert a command:");
String temp = userInput.nextLine();
while(temp != null){
String [] tokens = temp.split("\\s+");
for(String word : tokens){
System.out.print(word);
System.out.print(" ");
}
break;
}
System.out.print("\n");
}
}
要测试每个单词、数字和语音标记是否已实际保存为令牌,请更改System.out.print(“”)中的字符;对任何事情都加密。e、 g系统输出打印(“”);或
系统输出打印(“abcdefg”);它将把这些数据放在每个令牌之间,以证明令牌确实是分开的
不幸的是,目前我无法在for循环之外调用令牌数组,但在我找到它时会通知您
我想听听你们想做什么样的节目,因为我想我们都想做一些非常相似的东西
希望这就是你要找的
尊敬。好的,我编写的代码将要求您插入一个命令,然后它将接受您的命令,然后将其拆分为任意数量的空格(由于正则表达式)。然后将这些单词、数字、语音标记等保存为标记。然后可以操纵for循环中的每个单词
import java.util.Scanner;
public class CommandReaderProgram{
public static void main(String[] args){
Scanner userInput = new Scanner(System.in);
System.out.println("Please insert a command:");
String temp = userInput.nextLine();
while(temp != null){
String [] tokens = temp.split("\\s+");
for(String word : tokens){
System.out.print(word);
System.out.print(" ");
}
break;
}
System.out.print("\n");
}
}
要测试每个单词、数字和语音标记是否已实际保存为令牌,请更改System.out.print(“”)中的字符;对任何事情都加密。e、 g系统输出打印(“”);或
系统输出打印(“abcdefg”);它将把这些数据放在每个令牌之间,以证明令牌确实是分开的
不幸的是,目前我无法在for循环之外调用令牌数组,但在我找到它时会通知您
我想听听你们想做什么样的节目,因为我想我们都想做一些非常相似的东西
希望这就是你要找的
问候。对不起,我不明白你的“但是想一想”部分,是不是完全一样?或者你可能在单词之间有不止一个空格?然后,首先修剪掉那些额外的空白(如正则表达式),然后进行分割工作;有关此问题的更多详细信息,包括您的代码和预期的输出将非常有用。您可以使用正则表达式
。split(\\s+)
=重复的空格。对不起,我不明白您的“but think”部分,它不是完全一样吗?或者你可能在单词之间有不止一个空格?然后,首先修剪掉那些额外的空白(如正则表达式),然后进行分割工作;有关此问题的更多详细信息,包括您的代码和预期输出,将非常有用。您可以使用正则表达式.split(\\s+)
=重复的空格。+1,因为这很可能是问题想要的。因此,对于line.replaceAll,如果让我们说,它有超过1个空间或标签,它将重建它只有一个空间。。。对吗?Marios,例如,如果输入字符串将是“我20岁!!!”,替换后将变成“我20岁!!!”+1,因为这很可能是问题想要的东西。因此,对于line.replaceAll,如果它有超过1个空格或制表符,它将仅用空格重建它。。。对吗?马里奥,例如,如果输入字符串将是“我20岁!!!”,替换后将变成“我20岁!!!”。嗯,该页面还显示:“StringTokenizer
是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它。建议寻求此功能的任何人改用String
的split
方法或java.util.regex包。“我想问你更多的问题。。。我使用此代码是为了分割用户的输入,但现在我不想打印它们,而是想单独使用它们。。。伊敏:这是一个测试。。。如果(this==something){……我想创建if语句,但我不知道如何获取它们并将它们存储到一个字符串变量!!!嗯,该页面还说:“StringTokenizer
是一个遗留类,尽管不鼓励使用它,但出于兼容性原因保留它