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) ArrayList
    1. 如果最后一个“字符”是转义字符,则抛出异常;这是无效的
    2. 如果我们正处于引用中间,则抛出异常;这是无效的
    3. 否则,将最终令牌添加到 (tokens)
  4. 返回 (tokens) 的 String[] 版本

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

delim String:用于拆分的分隔符

logging boolean:是否记录操作

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

抛出
IllegalArgumentException 如果无法解析相应行