📜  Rexx-解析

📅  最后修改于: 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