Rexx - 解析
Rexx 最强大的功能之一是它解析文本值的能力。 您可能不会在任何其他编程语言中看到这一点。
PARSE 解析语句的一般格式如下 −
语法
PARSE {UPPER|LOWER|CASELESS} source {template}
其中
UPPER − 在解析之前将源代码转换为大写。
LOWER − 在解析之前将源代码转换为小写。
CASELESS − 传递此参数时,大小写将被忽略。
source − 这就是需要解析的源码。 有许多选项可用于此,可以是以下任意一项 −
ARG − 程序或过程的参数可以用作源。
LINEIN − 下一行输入可以用作源。
SOURCE − 可以将程序的源码信息作为来源。
VAR name − 变量名称的值可以用作源。
template − 该参数指定如何解析源。 为此有很多选项可用。 下面提到了其中一些。
variable name − 这是分配给变量的值。
literal string − 一个文字字符串,可以使用模式来分割字符串。
# − 源本身内的绝对字符位置。 因此,如果您指定值 5,则将使用第 5 个字符。
+# − 源本身内的相对字符位置。 因此,如果您指定值 5,则将相对使用第 5 个字符。
让我们看一个简单的示例,了解如何在 Rexx 中完成解析。
示例
/* 主程序 */ parse value 'This is a Tutorial' with word1 word2 word3 word4 say "'"word1"'" say "'"word2"'" say "'"word3"'" say "'"word4"'"
上面的程序解析短语中的单词。 当一个值由仅由一个空格分隔的单词组成,并且没有前导或尾随空格时,该值很容易解析为已知数量的单词,如下所示。
Rexx 中使用解析函数来获取字符串值,然后将其分解为单词。 在上面的例子中,单词被分割,然后存储在单词变量中。
上述程序的输出如下 −
'This' 'is' 'a' 'Tutorial'
下面的程序显示了另一个解析示例。 这次我们使用 while 子句来进行解析。
示例
/* 主程序 */ phrase = 'This is a Tutorial' do while phrase <> '' parse var phrase word phrase say "'"word"'" end
上面的程序将给出以下输出 −
'This' 'is' 'a' 'Tutorial'
位置解析
Rexx 还允许进行位置解析。 让我们看一个如何使用 parse 语句实现位置解析的示例。
示例
/* 主程序 */ testString = "Doe John M. 03/03/78 Mumbai India"; parse var testString name1 11 name2 21 birthday 31 town 51 country say name1 say name2 say birthday say town say country
从上面的示例中,您可以注意到,除了变量名称之外,我们还指定了字符串的结束位置。 因此对于name1,我们应该以第11个字符结束,然后开始解析name2。
上述程序的输出如下 −
Doe John M. 03/03/78 Mumbai India
在这种情况下,您还可以使用相对位置解析。
示例
/* 主程序 */ testString = "Doe John M. 03/03/78 Mumbai India"; parse var testString name1 +10 name2 +10 birthday +10 town +20 country say name1 say name2 say birthday say town say country
上述程序的输出如下所示。
Doe John M. 03/03/78 Mumbai India