用于解析为词的简单模板
以下是解析指令:
parse value 'time and tide' with var1 var2 var3此指示信息中的模板为: var1 var2 var3。 要解析的数据介于关键字 PARSE VALUE 和关键字 WITH(源字符串 time
and tide) 之间。 解析将源字符串划分为空白定界词,并将它们分配给模板中指定的变量,如下所示:var1='time'
var2='and'
var3='tide'在此示例中,要解析的源字符串是文字字符串 time and tide。 在下一个示例中,源字符串是一个变量。/* PARSE VALUE using a variable as the source string to parse */
string='time and tide'
parse value string with var1 var2 var3 /* same results */PARSE VALUE 不会将源字符串中的小写 a-z 转换为大写 A-Z。 如果要将字符转换为大写,请使用 PARSE UPPER VALUE。 请参阅 使用 UPPER 以获取解析指示信息对案例的影响的摘要。
所有解析指令都将源字符串的部分分配给模板中指定的变量。 由于源字符串的性质或来源不同,存在各种解析指令。 请参阅 解析指令摘要。
PARSE VAR 指令与 PARSE VALUE 相似,只是要解析的源字符串始终是一个变量。 在 PARSE VAR 中,包含源字符串的变量的名称跟在关键字
PARSE VAR后面。 在下一个示例中,变量 stars 包含源字符串。 模板为 star1 star2
star3。/* PARSE VAR example */
stars='Sirius Polaris Rigil'
parse var stars star1 star2 star3 /* star1='Sirius' */
/* star2='Polaris' */
/* star3='Rigil' */模板中的所有变量都将接收新值。 如果模板中的变量多于源字符串中的词,那么剩余变量将接收空值。 对于所有解析都是如此: 用于使用简单模板解析为词以及使用包含模式的模板进行解析。 以下是使用 "解析为词" 的示例。
/* More variables in template than (words in) the source string */
satellite='moon'
parse var satellite Earth Mercury /* Earth='moon' */
/* Mercury='' */如果源字符串中的单词多于模板中的变量,那么模板中的最后一个变量将接收所有剩余数据。 例如:
/* More (words in the) source string than variables in template */
satellites='moon Io Europa Callisto...'
parse var satellites Earth Jupiter /* Earth='moon' */
/* Jupiter='Io Europa Callisto...'*/在将词赋给变量之前,解析为词将从每个词中除去前导空格和尾部空格。 此变量的例外情况是分配给最后一个变量的词或词组。 模板中的最后一个变量接收剩余的数据,保留额外的前导和尾部空格。 例如:
/* Preserving extra blanks */
solar5='Mercury Venus Earth Mars Jupiter '
parse var solar5 var1 var2 var3 var4
/* var1 ='Mercury' */
/* var2 ='Venus' */
/* var3 ='Earth' */
/* var4 =' Mars Jupiter ' */在源字符串中, Earth 有两个前导空格。 在分配 var3='Earth'之前,解析将除去这两个字段 (单词分隔符空格和额外的空格)。 Mars 有三个前导空格。 解析将除去一个字分隔符空格,并保留其他两个前导空格。 它还保留 Mars 和 Jupiter 之间的所有五个空格以及 Jupiter之后的两个尾部空格。
如果模板仅包含一个变量,那么解析将不除去空白。 例如:
parse value ' Pluto ' with var1 /* var1=' Pluto '*/作为占位符的句点
模板中的句点是占位符。 使用它来代替变量名,但它不接收任何数据。 占位符可保存不需要的变量的开销。 它很有用:
第一个示例中的句点是占位符。 请确保用空格分隔相邻的句点; 否则,将产生错误。- 作为变量列表中的
哑元变量
- 在字符串末尾收集不需要的信息。
/* Period as a placeholder */
stars='Arcturus Betelgeuse Sirius Rigil'
parse var stars . . brightest . /* brightest='Sirius' */
/* Alternative to period as placeholder */
stars='Arcturus Betelgeuse Sirius Rigil'
parse var stars drop junk brightest rest /* brightest='Sirius' */