我有一个简单的 Ruby 脚本,它从文件中逐行读取数据,这是数据示例;
"SW02 CAR03 B0932 B23(B) B32(A) V1000 V0020"
"T001 T665 CAR99A B0932 S222 LA44 V1009 V0029"
我试图找到一种方法来根据每个单词的第一个字母来匹配和替换整个单词。例如。 'Sxxxxxx' 应替换为单词 'SWT','Vxxxx' 应替换为 'VAL'
我期望的输出是;
"SWR CAR BOT BOT BOT VAL VAL"
"TNK TNK CAR BOT SWT LTC VAL VAL"
示例代码;
File.open('test.txt').each do |line|
output = line.gsub!('V', 'VAL')
puts output
到目前为止我已经尝试过(这显然不起作用,因为它将 V 的任何实例替换为 VAL)
这是为了自动生成机器可读的配置文件。
最佳答案
使用正则表达式:
File.open('test.txt').each do |line|
output = line.gsub!(/\bV[^\s]*/, 'VAL')
puts output
end
编辑:
对于多次替换,我建议使用哈希而不是像 case-when
这样的东西,并像下面这样构建正则表达式:
replacements = { 'V' => 'VAL', 'S' => 'SWT' }
str = "SW02 CAR03 B0932 B23(B) B32(A) V1000 V0020"
str.gsub(/\b(V|S)[^\s]*/) {|s| replacements[$1] }
#=> "SWT CAR03 B0932 B23(B) B32(A) VAL VAL"
关于ruby - 根据每个单词的起始字母替换字符串中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378508/