本例中使用的令牌是什么

  • 本文关键字:令牌 是什么 java
  • 更新时间 :
  • 英文 :


有人能告诉我这段代码中的令牌是用来做什么的吗?我最近刚刚在Java中发现了令牌,并试图了解它们的使用原因。我以为代币被用作断点,但在这里,它看起来几乎是用来限制的

private String printResult()
{
StringBuilder result = new StringBuilder();
String swimType=null;
String length=null;
String width=null;
String depth=null;
String volume=null;
String radius=null;
String pnlName = null;
try {
File resultFile = new File("Report.txt");
Scanner resultScanner = new Scanner(resultFile);
while(resultScanner.hasNext())
{
StringTokenizer strToken = new StringTokenizer(resultScanner.nextLine(), ":");
if(strToken.hasMoreTokens())
{
pnlName = strToken.nextToken();
swimType = strToken.nextToken();
if("Box".equalsIgnoreCase(swimType))
{
length = strToken.nextToken();
width = strToken.nextToken();
depth = strToken.nextToken();
volume = strToken.nextToken();
result.append(createResultStr(swimType, length, width, depth, volume));
}
else
{
radius = strToken.nextToken();
depth = strToken.nextToken();
volume = strToken.nextToken();                      
result.append(createResultStr(swimType, radius, depth, volume));
}
}               
}   

标记化是根据字符拆分字符串的过程。你可能想用逗号分隔。您通过标记化器传递字符串,并将","作为分隔符。然后,当您从标记化器中读取每个项目时,它们会根据分隔符进行拆分。我见过的一种常见方法是阅读直播。标记化器在换行符上分割流,然后使用另一个标记化器用逗号或制表符分割每一行。

文本处理通常包括解析格式化的输入字符串解析是将文本划分为一组离散的部分,或标记,序列可以传递语义。StringTokenizer类提供了第一个解析过程中的步骤,通常称为lexer(词法分析器)或scannerStringTokenizer实现了枚举接口。因此给定一个输入字符串,您可以使用StringTokenizer枚举其中包含的各个令牌。

要使用StringTokenizer,您可以指定一个输入字符串和一个包含分隔符的字符串。分隔符是分隔标记的字符。分隔符字符串中的每个字符都被视为有效的分隔符——例如,",;:">将分隔符设置为逗号、分号和冒号。默认的分隔符集包括空白字符:空格、制表符、换行符和回车符。

显示StringTokenizer构造函数此处:

StringTokenizer(String str) 
StringTokenizer(String str, String delimiters) 
StringTokenizer(String str, String delimiters, boolean delimAsToken)

在所有版本中,str是将被标记化。在第一个版本中,使用默认的分隔符。在第二个和第三个版本中,分隔符是一个字符串指定分隔符。在第三个版本中,如果delimAsTokentrue,则在解析字符串时,分隔符也作为令牌返回。否则不返回分隔符 

前两种形式不会将分隔符作为标记返回。创建StringTokenizer对象后,nextToken()方法用于提取连续的令牌。拥有更多代币()方法返回true,同时还有更多的令牌要提取。由于StringTokenizer实现了枚举,这个hasMoreElements()nextElement()方法也实现了,它们的作用与hasMoreTokens相同()nextToken()

下面是一个创建StringTokenizer以解析"key=值";成对。连续的";key=值";对由分隔分号。

// Demonstrate StringTokenizer.
import java.util.StringTokenizer;
class STDemo {
static String in = "title=Java-Samples;" +
"author=Emiley J;" +
"publisher=java-samples.com;" +
"copyright=2007;";
public static void main(String args[]) {
StringTokenizer st = new StringTokenizer(in, "=;");
while (st.hasMoreTokens()) {
String key = st.nextToken();
String val = st.nextToken();
System.out.println(key + "t" + val);
}
}
}

此程序的输出如下所示:

title Java-samples 
author Emiley J 
publisher java-samples.com 
copyright 2007


注意
如果分隔符为null,则此构造函数不会引发异常。但是,尝试在生成的StringTokenizer上调用其他方法可能会导致NullPointerException

似乎输入文件包含特定结构的数据,而:是一个分隔符,因此它逐个标记地读取数据,并为变量赋值,并进一步附加到某个result字符串

最新更新