我有一个REXX参数字符串,格式如下:
arg = 'update summary(A summary of something) description(The description)'
我解析了模式、摘要和描述,如下所示:
parse upper var arg mode . ,
1, 'SUMMARY('summary')' .,
1, 'DESCRIPTION('description')' .
我将arg转换为大写,以便摘要和描述关键字有效地不区分大小写(用户可以编写SUMMARY或Summary或SUmmAry等代码),但当然,现在我已经将实际的摘要和描述转换为大写。
如何才能使关键字的解析不区分大小写,同时保持实际参数的正确大小写?
我已经考虑过提取关键字的字符位置,并在解析语句中使用它们,而不是'1‘等,但如果可能的话,我想要一个简单而简洁的过程。
发布于 2019-06-05 20:06:06
我想出了这个'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)
发布于 2019-06-06 05:52:35
在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
发布于 2019-07-16 17:40:34
正如所提供的,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
https://stackoverflow.com/questions/56458802
复制相似问题