用于解析为词的简单模板

以下是解析指令:
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 有三个前导空格。 解析将除去一个字分隔符空格,并保留其他两个前导空格。 它还保留 MarsJupiter 之间的所有五个空格以及 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' */