【问题标题】:In Groovy Language How to replace a character in a string based on the value and position in the string在 Groovy 语言中如何根据字符串中的值和位置替换字符串中的字符
【发布时间】:2016-04-05 14:44:21
【问题描述】:

如果字符串中的某些位置是某些值,我希望修改字符串的值,例如我有一个邮政编码 L65 OBH,我需要执行以下操作:

(1)

如果字符串第一部分的第一个值(由空格分隔)= L,则需要将其更改为 T。这将给出:

T65 OBH

(2)

如果字符串第一部分的第二个值(由空格分隔)= 6,则需要将其更改为 7。这将给出:

T75 OBH

(3)

如果字符串第二部分的第一个值(由空格分割)= O,则需要将其更改为 2。这将给出:

T75 2BH

(4)

如果字符串第二部分的第三个值(由空格分隔)= H,则需要将其更改为 P。这将给出:

T75 2BP

我假设我需要使用 replaceall 和一些 IF 语句,但我正在努力解决这个问题,特别是如何将邮政编码的 2 个不同部分分开,将它们视为单独的实体......可以请大家帮忙

【问题讨论】:

    标签: string groovy soapui


    【解决方案1】:

    我会为替换规则编写一个辅助方法:

    def postcode = 'L65 0BH'
    
    def (first, second) = postcode.split(/\s+/)
    
    def replaceIf(String token, int position, String match, String replacement) {
        (0..<token.length()).collect { index ->
            if(index == position && token[index] == match) {
                replacement
            }
            else {
                token[index]
            }
        }.join()
    }
    
    first = replaceIf(first, 0, 'L', 'T')
    first = replaceIf(first, 1, '6', '7')
    second = replaceIf(second, 0, '0', '2')
    second = replaceIf(second, 2, 'H', 'P')
    
    assert "$first $second" == 'T75 2BP'
    

    【讨论】:

    • 嗨,感谢 tim_yates 的快速反馈,这看起来是我想要使用的,但是它给了我 2BP 作为响应?
    • 您需要将两者结合在一起"$first $second",正如我在代码底部显示的那样
    【解决方案2】:
    def strVal= "L65 OBH"
    strVal.replaceFirst(/^L/, "T")
    
    def strVal1= "L65 OBH"
    strVal1.replaceFirst(/^6/, "7")
    

    等等使用相同的replaceFirst()方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 2011-10-14
      • 2019-09-29
      • 1970-01-01
      • 2014-07-06
      • 2017-09-17
      • 2016-08-04
      相关资源
      最近更新 更多