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, String delim, boolean logging)

对字符串进行标记化,按指定的分隔符进行拆分。

static String[] tokenizeLine(String line, 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, 
                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 如果行无法解析

tokenizeLine

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

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

另请参阅 tokenizeLine(String, String)

参数
line String

logging boolean

返回
String[]