我有一个格式为REXX的参数字符串:
arg = 'update summary(A summary of something) description(The description)'
我正在解析模式,摘要和描述,如下所示:
parse upper var arg mode . ,
1, 'SUMMARY('summary')' .,
1, 'DESCRIPTION('description')' .
我将arg转换为大写字母,这样,summary和description关键字实际上不区分大小写(用户可以编写Summary或SUmmAry或sUmMaRy等),但是现在我已经将实际的摘要和说明翻译为大写。
如何使关键字的解析不区分大小写,而对实际参数却保留正确的大小写?
我已经考虑过提取关键字的字符位置,并在PARSE语句中使用它们,而不是“ 1”等,但是如果可能,希望有一个简单的过程。
答案 0 :(得分:1)
我想出了这个“ toUpper”功能,它比预期的要简单一些。它使用一个字符串和一个单词列表作为输入,并返回该字符串,如果找到该单词,则将任何单词转换为大写字母:
parms = 'UPdatE summary(The summary) Description(The description)'
say 'Parms are :' parms
parms = toUpper(parms, 'CHANGE UPDATE SUMMARY DESCRIPTION')
say 'Parms are now :' parms
exit
/********************************************************************/
/* Subroutines */
/********************************************************************/
toUpper:
parse arg string, wordList
stringUpper = string
upper stringUpper wordlist
do i = 1 to words(wordlist)
word = word(wordlist,i)
pos = pos(word, stringUpper)
if pos > 0 then string = overlay(word, string, pos)
end
return string
输出:
Parms are : UPdatE summary(The summary) Description(The description)
Parms are now : UPDATE SUMMARY(The summary) DESCRIPTION(The description)
答案 1 :(得分:1)
当尝试在Rexx中模拟TSO-ish / IDCAMS-ish语法时,这是一个非常常见的任务。我通常会做这样的事情。这是一个简短的习语,我从不费心去做一个子例程,只需要内联使用它即可。
summary = 'Whatever the default value is'
description = 'Whatever the default value is'
parse var arg mode arg
mode = upper(mode)
do while arg <> ''
parse var arg keyword '(' value ')' arg
select upper(keyword)
when 'SUMMARY' then summary = value
when 'DESCRIPTION' then description = value
otherwise Say 'Unknown option:' keyword
end
end
答案 2 :(得分:0)
按原样,Ross的代码在z / OS系统上不起作用。 z / OS上的REXX有点古老。 :-(以下代码将起作用。
summary = 'Whatever the default value is'
description = 'Whatever the default value is'
arg = 'UPdatE summary(The summary) Description(The description)'
parse var arg mode arg
upper mode
do while arg <> ''
parse var arg keyword '(' value ')' arg
upper keyword
select
when keyword='SUMMARY' then summary = value
when keyword='DESCRIPTION' then description = value
otherwise Say 'Unknown option:' keyword
end
end