用 gsub 只替换字符串中的整数
Replace only the integers in a string with gsub
我试图去掉这个字符串中的整数,但保留浮点数。我已经在线尝试了下面的正则表达式并突出显示了正确的部分,但是当我使用 gsub
时会注意到
tops = "17500 dw.sapAGZ_D00 pf=/usr/sap/A 8.0 17488 dw.sapAGZ_D00 pf=/usr/sap/A 7.1 17489 dw.sapAGZ_D00 pf=/usr/sap/A 7.0 17493 dw.sapAGZ_D00 pf=/usr/sap/A 5.9 17490 dw.sapAGZ_D00 pf=/usr/sap/A 5.7 17495 dw.sapAGZ_D00 pf=/usr/sap/A 5.4 17499 dw.sapAGZ_D00 pf=/usr/sap/A 5.0 17480 dw.sapAGZ_D00 pf=/usr/sap/A 4.3 17492 dw.sapAGZ_D00 pf=/usr/sap/A 4.0"
tops.gsub(/(?<=\s|^)\d+(?=\s|$)/, '--- ')
puts tops ;
您的搜索模式很好(对于特定输入 - 例如,我猜它不会正确处理负整数),但 gsub
只是不改变接收者(原始字符串) - 它returns 一个包含所有替换的新版本。
因此,要么使用 gsub!
,要么将字符串重新分配给另一个变量(如果您也需要原始字符串)。
我试图去掉这个字符串中的整数,但保留浮点数。我已经在线尝试了下面的正则表达式并突出显示了正确的部分,但是当我使用 gsub
时会注意到tops = "17500 dw.sapAGZ_D00 pf=/usr/sap/A 8.0 17488 dw.sapAGZ_D00 pf=/usr/sap/A 7.1 17489 dw.sapAGZ_D00 pf=/usr/sap/A 7.0 17493 dw.sapAGZ_D00 pf=/usr/sap/A 5.9 17490 dw.sapAGZ_D00 pf=/usr/sap/A 5.7 17495 dw.sapAGZ_D00 pf=/usr/sap/A 5.4 17499 dw.sapAGZ_D00 pf=/usr/sap/A 5.0 17480 dw.sapAGZ_D00 pf=/usr/sap/A 4.3 17492 dw.sapAGZ_D00 pf=/usr/sap/A 4.0"
tops.gsub(/(?<=\s|^)\d+(?=\s|$)/, '--- ')
puts tops ;
您的搜索模式很好(对于特定输入 - 例如,我猜它不会正确处理负整数),但 gsub
只是不改变接收者(原始字符串) - 它returns 一个包含所有替换的新版本。
因此,要么使用 gsub!
,要么将字符串重新分配给另一个变量(如果您也需要原始字符串)。