📅  最后修改于: 2020-11-02 04:03:45             🧑  作者: Mango
Rexx最强大的功能之一就是它能够解析文本值。您可能不会在任何其他编程语言中看到它。
解析语句的一般格式如下-
PARSE {UPPER|LOWER|CASELESS} source {template}
哪里,
UPPER-解析前将源转换为大写。
LOWER -源极转换解析之前为小写。
CASELESS-通过此参数时,将忽略套管。
source-这是需要解析的源。有很多可用的选项,可以是以下任一选项:
ARG-程序或过程的参数可用作源。
LINEIN-下一行输入可用作源。
源-程序的源信息可以用作源。
VAR名称-变量名称的值可用作源。
template-此参数指定如何解析源。有许多可用的选项。下面提到其中一些。
变量名-这是分配给变量的值。
字面量字符串-字面量字符串,可以将其用作模式以分割串。
# -源本身中的绝对字符位置。因此,如果您指定值为5,则将使用第5个字符。
+# -源本身中的相对字符位置。因此,如果您将值指定为5,则会相对使用第5个字符。
让我们看一个简单的示例,了解如何在Rexx中完成解析。
/* Main program */
parse value 'This is a Tutorial' with word1 word2 word3 word4
say "'"word1"'"
say "'"word2"'"
say "'"word3"'"
say "'"word4"'"
上面的程序解析短语中的单词。当值由仅由一个空格分隔的单词组成,并且没有前导或尾随空格时,该值很容易按以下方式解析为已知数量的单词。
Rexx中使用了parse函数来获取字符串值,然后将其分解为单词。在上面的示例中,单词被拆分,然后存储在单词变量中。
上述程序的输出如下-
'This'
'is'
'a'
'Tutorial'
下面的程序显示了另一个解析示例。这次我们使用while子句进行解析。
/* Main program */
phrase = 'This is a Tutorial'
do while phrase <> ''
parse var phrase word phrase
say "'"word"'"
end
上面的程序将给出以下输出-
'This'
'is'
'a'
'Tutorial'
Rexx还允许一个人使用位置解析。让我们看一个如何使用parse语句实现位置解析的示例。
/* Main program */
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
在这种情况下,您也可以使用相对位置解析。
/* Main program */
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