QuotationAwareTokenizer

public class QuotationAwareTokenizer
extends Object

java.lang.Object
   ↳ com.android.tradefed.util.QuotationAwareTokenizer


摘要

公共构造函数

QuotationAwareTokenizer()

公共方法

static String combineTokens(String... tokens)

执行 tokenizeLine(String) 的反向操作。

static String[] tokenizeLine(String line, String delim)
static String[] tokenizeLine(String line)

对字符串进行词法单元化处理,按空格进行拆分。

static String[] tokenizeLine(String line, boolean logging)

对字符串进行标记化,按空格进行拆分。

static String[] tokenizeLine(String line, String delim, boolean logging)

将字符串拆解为令牌,并按指定的分隔符进行拆分。

公共构造函数

QuotationAwareTokenizer

public QuotationAwareTokenizer ()

公共方法

combineTokens

public static String combineTokens (String... tokens)

执行 tokenizeLine(String) 的反向操作。
给定一个词法单元数组,将其合并为一行。

返回
String 由所有令牌创建的 String

tokenizeLine

public static String[] tokenizeLine (String line, 
                String delim)

参数
line String

delim String

返回
String[]

tokenizeLine

public static String[] tokenizeLine (String line)

对字符串进行词法单元化处理,按空格进行拆分。不会在连续的未引号双引号之间拆分。

另请参阅 tokenizeLine(String, String)

参数
line String

返回
String[]

tokenizeLine

public static String[] tokenizeLine (String line, 
                boolean logging)

对字符串进行词法单元化处理,按空格进行拆分。不会在连续的未引号双引号之间拆分。

另请参阅 tokenizeLine(String, String)

参数
line String

logging boolean

返回
String[]

tokenizeLine

public static String[] tokenizeLine (String line, 
                String delim, 
                boolean logging)

对字符串进行标记化,按指定分隔符进行拆分。不能在连续的不带英文双引号之间拆分。

分词器的运作方式:

  1. 将字符串拆分为“字符”,其中每个“字符”要么是转义字符(例如 \",即“\\\""),要么是单个真实字符(例如 f,即“f”)。
  2. 对于每个“字符”
    1. 如果是空格,则完成令牌,除非我们正在引用
    2. 如果是引号,请翻转“我们正在被引用”位
    3. 否则,请将其添加到正在构建的令牌中
  3. 在 EOL 时,我们通常尚未向 (tokens) ERROR(/ArrayList) 添加最终令牌
    1. 如果最后一个“字符”是转义字符,则抛出异常;这不合规
    2. 如果我们正在引用,则抛出异常;这不合规
    3. 否则,将最终令牌添加到 (tokens)
  4. 返回 (tokens) 的 String[] 版本

参数
line String:要进行词法单元化的 String

delim String:作为拆分依据的分隔符

logging boolean:是否记录操作

返回
String[] 字符串的令牌化版本

抛出
IllegalArgumentException 如果行无法解析