在 ruby 中使函数参数不区分大小写
Make function parametres Case insensitive in ruby
这是我的函数:
def run_test_non_compilation(short_name,error_label)
@short_name = short_name
$error_label = error_label
# more coding here
end
我想要的是:
- 如果我执行
run_test_non_compilation('MDL_ConfigRS001',"HKI_load_cnf")
它应该给出与我使用
调用我的函数相同的结果
run_test_non_compilation('MDL_ConfigRS001',"hki_load_cnf")
或
run_test_non_compilation('MDL_ConfigRS001',"hki_LOAD_cnf")
等...
变量error_label
在函数内部使用时必须不区分大小写。
我看到你检查你的 error_label
是否存在于你的文件中。要使其不区分大小写,只需使用 match
并传递给它 Regexp
忽略大小写:
if line.match(/#{error_label}/i)
可以使用 String#casecmp 进行不区分大小写的比较:
if($error_label.casecmp(some_string) == 0) {
# do stuff
end
明确地说,无法 使字符串变量在 Ruby 中变得不区分大小写。您可以使用 some_string.casecmp(some_other_string)
比较字符串。这将 return 0
如果字符串相同,忽略大小写。
其次,你真的不想把它放在一个全局变量中。您可能是 PHP 开发人员吗?当您打算使用实例变量 (@) 时,从 PHP 移动到 Ruby 以创建全局变量 ($) 是很常见的。
无论如何,了解您打算如何处理该字符串会有很大帮助。如果您希望采用字符串的任何大小写,并在区分大小写的文件系统上找到一些配置文件,则必须枚举配置名称,然后执行类似 config_array.select {|a| $error_label.casecmp(a) == 0 }
的操作,其中 config_array 类似于['HKI_load_cnf'] 这才是真正的大写。虽然我不知道,但我真的很想了解你的问题。
这是我的函数:
def run_test_non_compilation(short_name,error_label)
@short_name = short_name
$error_label = error_label
# more coding here
end
我想要的是:
- 如果我执行
run_test_non_compilation('MDL_ConfigRS001',"HKI_load_cnf")
它应该给出与我使用
调用我的函数相同的结果run_test_non_compilation('MDL_ConfigRS001',"hki_load_cnf")
或
run_test_non_compilation('MDL_ConfigRS001',"hki_LOAD_cnf")
等...
变量error_label
在函数内部使用时必须不区分大小写。
我看到你检查你的 error_label
是否存在于你的文件中。要使其不区分大小写,只需使用 match
并传递给它 Regexp
忽略大小写:
if line.match(/#{error_label}/i)
可以使用 String#casecmp 进行不区分大小写的比较:
if($error_label.casecmp(some_string) == 0) {
# do stuff
end
明确地说,无法 使字符串变量在 Ruby 中变得不区分大小写。您可以使用 some_string.casecmp(some_other_string)
比较字符串。这将 return 0
如果字符串相同,忽略大小写。
其次,你真的不想把它放在一个全局变量中。您可能是 PHP 开发人员吗?当您打算使用实例变量 (@) 时,从 PHP 移动到 Ruby 以创建全局变量 ($) 是很常见的。
无论如何,了解您打算如何处理该字符串会有很大帮助。如果您希望采用字符串的任何大小写,并在区分大小写的文件系统上找到一些配置文件,则必须枚举配置名称,然后执行类似 config_array.select {|a| $error_label.casecmp(a) == 0 }
的操作,其中 config_array 类似于['HKI_load_cnf'] 这才是真正的大写。虽然我不知道,但我真的很想了解你的问题。