Ruby替换JSON的字符串表示的子串

时间:2017-08-28 23:50:16

标签: ruby string

我有一个如下的字符串,它是JSON格式:

  test_geometry_profile =
  '{
    "geometryProfile": {

      "SPEEDSeedModel0.osm": {
        "WWR": 0.5,
        "Orientation": 0.0
      },

      "SPEEDSeedModel1.osm": {
        "WWR": 0.6,
        "Orientation": 0.0
      }
    }
  }'

我想用SPEEDSeedModel1.osm替换此字符串中的子字符串'TestOSM_radiantDOAS.osm'

我使用了代码:

test_geometry_profile.sub("SPEEDSeedModel1.osm", 'TestOSM_radiantDOAS.osm')

但是,这不起作用。我在这里找不到什么东西吗?

1 个答案:

答案 0 :(得分:1)

它正常工作,但是sub会返回字符串的副本并进行替换。您可以通过运行来看到这一点:

test_geometry_profile =
  '{
    "geometryProfile": {

      "SPEEDSeedModel0.osm": {
        "WWR": 0.5,
        "Orientation": 0.0
      },

      "SPEEDSeedModel1.osm": {
        "WWR": 0.6,
        "Orientation": 0.0
      }
    }
  }'

puts test_geometry_profile
puts test_geometry_profile.sub("SPEEDSeedModel1.osm", 'TestOSM_radiantDOAS.osm')
puts test_geometry_profile

第二个值输出将进行更改,第三个值是原始字符串。你想要的是sub!,它改变了字符串:

puts test_geometry_profile
puts test_geometry_profile.sub!("SPEEDSeedModel1.osm", 'TestOSM_radiantDOAS.osm')
puts test_geometry_profile

现在第二个和第三个值都有新的字符串。