Java 如何分割用户';是用代币输入的吗?

Java 如何分割用户';是用代币输入的吗?,java,user-input,token,java.util.scanner,Java,User Input,Token,Java.util.scanner,我需要你的建议来做点什么。。。我想采取用户的输入行,因为我已经在我的程序与扫描仪。。。但我想将每个命令(单词)拆分为令牌。。。。我不知道该怎么做,直到现在我还在玩substring,但是如果用户例如按下两次空格键,一切都是错误的 例如: 请插入命令:我20岁了 使用substring或.split(“”),它将运行,但请考虑: 请插入命令:我20岁了 这就是为什么我需要你的建议。。。。问题是如何使用令牌分割用户的输入。好吧,在将字符串行分割为令牌之前,需要对其进行规范化。最简单的方法是删除重复的

我需要你的建议来做点什么。。。我想采取用户的输入行,因为我已经在我的程序与扫描仪。。。但我想将每个命令(单词)拆分为令牌。。。。我不知道该怎么做,直到现在我还在玩substring,但是如果用户例如按下两次空格键,一切都是错误的

例如:
请插入命令:我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
是一个遗留类,尽管不鼓励使用它,但出于兼容性原因保留它