美文网首页Jenkins
Jenkins实践指南-03-Groovy基础知识02

Jenkins实践指南-03-Groovy基础知识02

作者: Surpassme | 来源:发表于2022-12-08 23:49 被阅读0次

    2.4.4 数据类型

    2.4.4.1 字符串类型

    2.4.4.1.1 字符串定义

        在Groovy中字符中是使用单引号('')、双引号("")和三引号(''' '''""" """)包裹起来的字符串。示例如下所示:

    def strA='I am Surpass'
    def strB="I am Surpass"
    def strC=""" I
                 am
                 Surpass
    """
    def strD='''I
                 am
                 Surpass
    '''
    
    println "strA is ${strA}"
    println "strB is ${strB}"
    println "strC is ${strC}"
    println "strD is ${strD}"
    

        输出结果如下所示:

    strA is I am Surpass
    strB is I am Surpass
    strC is  I
                 am
                 Surpass
    
    strD is I
                 am
                 Surpass
    
    2.4.4.1.2 转义字符串

        在Groovy主要的转义字符串如下所示:

    转义字符串 含义
    \b 退格
    \n 换行
    \r 回车并换行
    \t 制表符
    \\ \
    \' 单引号
    \" 双引号

        示例如下所示:

    def strA='I\nam\nSurpass'
    def strB="I\tam\tSurpass"
    println "strA is ${strA}"
    println "strB is ${strB}"
    

        输出结果如下所示:

    strA is I
    am
    Surpass
    strB is I   am  Surpass
    
    2.4.4.1.3 Unicode字符

        当部分字符在你所使用的键盘不存在,可以使用Unicode字符,示例如下所示:

    println 'The Euro currency symbol: \u20AC'
    

        输出结果如下所示:

    The Euro currency symbol: €
    
    2.4.4.1.4 字符串插值

        在Groovy里面,除了单引号('')三个单引号(''' ''')之外,所有的字面常量均可以实现插值。字符串插值主要作用如下所示:

    • 将占位符给替换为实际的变量值,占位符通常被${}包裹。
    • 在插值表达式里面实现表达式功能

        示例如下所示:

    def name="Surpass"
    def greeting="Hello,${name}"
    def sum="The sum of 8 and 7 equals ${8+7}"
    def templateString="""
         Dear ${name},
    
         You are the winner
    """
    println greeting
    println sum
    println templateString
    
    

        运行结果如下所示:

    Hello,Surpass
    The sum of 8 and 7 equals 15
    
         Dear Surpass,
    
         You are the winner
    
    
    

    除以上常见的用法,${}还支持在占位符里进行声明,如果占位符里面有多个声明,则最终取值为最后一行代码的值,示例如下所示:

    def sum="The sum of 8 and 7 equals ${def a=10;def b=20; a+b}"
    println sum
    

        运行结果如下所示:

    The sum of 8 and 7 equals 30
    

        在Groovy里面插值的用法总结如下所示:

    字符类型 语法 是否支持插值 示例 输出结果
    单引号 '..' def name="Surpass";println 'Hello,${name}' Hello,${name}
    双引号 ".." def name="Surpass";println "Hello,${name}" Hello,Surpass
    三单引号 '''..''' def name="Surpass";println '''Hello,${name}''' Hello,${name}
    三又引号 """..""" def name="Surpass";println """Hello,${name}""" Hello,Surpass
    2.4.4.1.5 常用方法
    • 1.判断是否包含特定内容

        判断是否包含特定内容一般使用方法contains,示例如下所示:

    def hello="Hello , Surpass"
    def containStr="Surpass"
    if (hello.contains(containStr)){
        println "${hello} contains ${containStr}"
    }else{
      println "${hello} not contains ${containStr}"
    }
    
    • 2.查看字符串长度

        查看字符串长度一般使用方法lengthsize,示例如下所示:

    def hello="Hello , Surpass"
    
    println hello.size()
    println  hello.length()
    
    • 3.转换为字符串

        转换为字符串长度一般使用方法toString,示例如下所示:

    def number=123
    println number instanceof String  // false
    println number.toString() instanceof String // true
    
    • 4.判断以特定内容开始或结束

        转换为字符串长度一般使用方法startsWithendsWith,示例如下所示:

    def hello="Hello,Surpass"
    println hello.startsWith("Hello") // true
    println hello.endsWith("Surpass") // true
    
    • 5.转换大小写

        转换为字符串长度一般使用方法toUpperCasetoLowerCase,示例如下所示:

    def hello="Hello,Surpass"
    println hello.toUpperCase() // HELLO,SURPASS
    println hello.toLowerCase() // hello,surpass
    
    • 6.分隔字符串

        转换为字符串长度一般使用方法split,示例如下所示:

    def hello="Hello,Surpass"
    def splitStr=hello.split(",") // 输出为字符数组 [Hello, Surpass]
    
    for(item in splitStr){
      println item
    }
    

    使用split方法需要注意,默认是支持正则表达式,因为特殊字符需要转义

    • 7.字符连接

        字符中常用方法为+concat,示例如下所示:

    def strA="Hello"
    def strB=","
    def strC="Surpass"
    
    println strA+strB+strC  // Hello,Surpass
    println strA.concat(strB).concat(strC) // Hello,Surpass
    
    • 8.字符替换
          字符中常用方法为replace,示例如下所示:
    def hello="Hello,Surpass"
    
    println hello.replace("Hello","Hi") // Hi,Surpass
    

    2.4.4.2 数值类型

    2.4.4.2.1 int类型

        Groovy中常见的数值类型有bytecahrshortintlongjava.math.BigInteger。定义示例如下所示:

    byte b=1
    char c=2
    short s=3
    int i=5
    long l=5
    

    以上为原始的定义方式,在Groovy,推荐使用def,系统会进行类型推断,示例如下所示:

    def a=1
    assert a instanceof Integer
    
    //  Integer.MAX_VALUE
    def b=2147483647
    assert b instanceof Integer
    
    // Integer.MAX_VALUE + 1
    def c = 2147483648
    assert c instanceof Long
    
    // Long.MAX_VALUE
    def d = 9223372036854775807
    assert d instanceof Long
    

        对于人类而言,平时接触更多的是十进制的数字,Groovy也支持非十进制的数字,例如二进制八进制十六进制,表示方法如下所示:

    • 二进制:以0b开始
    • 八进制:以0开始
    • 十六进制:以0x开始

        示例如下所示:

    def binaryNum=0b111
    def octalNum=012
    def hexNum=0xFF
    
    println binaryNum
    println octalNum
    println hexNum
    

        输出结果如下所示:

    7
    10
    255
    
    2.4.4.2.2 浮点型

        在Groovy中,常见的浮点类型主要有floatdouble,示例如下所示:

    float f=7.18
    double d=3.1415926
    

        除以上声明浮点数据后,也可以使用科学计数法,使用Ee进行表示,示例如下所示:

    def a=1e3
    def b=1E-3
    assert a==1000
    assert b==0.001
    

    2.4.4.3 bool类型

        在Groovy中,bool类型只有两个值truefalse,常用于逻辑判断等场景,示例如下所示:

    def boolVariableA=true
    boolean boolVariableB=false
    assert boolVariableA
    assert !boolVariableB
    

    2.4.4.4 List类型

    2.4.4.4.1 基本定义

        在Groovy中使用中括号[]来定义List,各个元素间使用逗号,来分隔元素,示例如下所示:

    def numbers=[1,2,3]
    def personInfo=["Surpass",28,"Shanghai"]
    
    2.4.4.4.2 常用方法
    • 1.获取List长度

        获取List长度可以使用其方法size(),示例如下所示:

    def numbers=[1,2,3,4,5,6,7,8,9,0]
    def personInfo=["Surpass",28,"Shanghai"]
    
    numbersLength= numbers.size()
    personInfoLength= personInfo.size()
    
    • 2.获取List元素值

        获取List的元素值,使用对应的索引即可,索引从0开始,示例如下所示:

    def personInfo=["Surpass",28,"Shanghai"]
    
    personName=personInfo[0]
    personLoc=personInfo[2]
    
    • 3.添加List元素值

        向List添加元素,可以使用add方法或使用符号<<,示例如下所示:

    def personInfo=["Surpass",28,"Shanghai"]
    
    personInfo << "Wuhan"
    personInfo.add("Testor")
    
    • 4.判断是否为空

        判断List是否为空,可以使用isEmpty方法

    def personInfo=["Surpass",28,"Shanghai"]
    def emptyList=[]
    
    if ( emptyList.isEmpty() ){
       println("personInfo is " + personInfo)
    }else{
       println("emptyList is " + emptyList)
    }
    
    • 5.判断是否存在交集

        判断两个List是否有交集,可以使用方法intersect

    def personInfoA=["Surpass",28,"Shanghai"]
    def personInfoB=["Surpass"]
    
    println(personInfoA.intersect(personInfoB)) // 输出结果:[Surpass]
    
    • 6.List去重

        List去重可以使用方法unique

    def personInfo=["Surpass",28,"Shanghai","Surpass"]
    
    println(personInfo.unique()) // 输出结果:[Surpass, 28, Shanghai]
    
    • 7.判断是否包含某元素

        判断List是否包含某元素可以使用方法contains

    def personInfo=["Surpass",28,"Shanghai","Surpass"]
    
    println(personInfo.contains("Surpass")) // 输出结果:true
    
    • 8.删除或清空元素

        List中删除元素可以使用方法remove,清空List可以使用方法clear

    def personInfo=["Surpass",28,"Shanghai"]
    def removeItem=personInfo.remove(0)
    
    println(removeItem) // Surpass
    println(personInfo) // [28, Shanghai]
    personInfo.clear()
    println(personInfo) // []
    
    • 9.遍历元素

        List中遍历元素可以使用方法each

    def personInfo=["Surpass",28,"Shanghai"]
    
    // 方式一:
    personInfo.each{ item ->
      println item
    }
    
    // 方式二:
    personInfo.each{
       println it
    }
    
    // 方式三:
    personInfo.eachWithIndex{ item,index ->
      println index + ":" + item
    }
    

        最终的输出结果如下所示:

    urpass
    28
    Shanghai
    
    Surpass
    28
    Shanghai
    
    0:Surpass
    1:28
    2:Shanghai
    
    

    2.4.4.5 Map

    2.4.4.5.1 基本定义

        在Groovy里面定义Map使用[key:value]进行定义,多个key-value之间使用进行分隔,示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    
    2.4.4.5.2 常用方法
    • 1.获取Map大小

        获取Map大小,一般使用方法size,示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    
    println personInfo.size() // 3
    
    • 2.获取Map值

        获取Map值,一般使用方法getmap[key]map.key形式,示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    // 方式一
    println personInfo["name"]
    // 方式二
    println personInfo.get("name")
    // 方式三
    println personInfo.name
    
    • 3.判断Map是否为空

        判断Map是否为空,一般使用方法isEmpty,示例如下所示:

    def emptyMap=[:]
    println emptyMap.isEmpty() // true
    
    • 4.判断Map是否包含某个key或value

        判断Map是否包含某个key或value,一般使用方法containsKeycontainsValue,示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    
    println personInfo.containsKey("name") // true
    println personInfo.containsValue("Surpass") // true
    
    • 5.获取Map所有key、value或所有元素

        获取Map所有key、value或所有元素,一般使用方法keySetvaluesentrySet,示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    
    // 获取所有Key
    println personInfo.keySet() // [name, age, loc]
    // 获取所有Value
    println personInfo.values() //  [Surpass, 28, Shanghai]
    // 获取所有Map 元素的key和value
    println personInfo.entrySet() // [name=Surpass, age=28, loc=Shanghai]
    
    • 6.向Map添加元素

        向Map添加元素,一般使用方法put(key,value)map[key]=valuemapA.putAll(mapB),示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    def from=[from:"Wuhan",to:"Beijing"]
    
    //方式一:
    personInfo.put("dst","Shengzhen")
    println personInfo // [name:Surpass, age:28, loc:Shanghai, dst:Shengzhen]
    // 方式二:
    personInfo["src"]="Hanzhou"  // [name:Surpass, age:28, loc:Shanghai, dst:Shengzhen, src:Hanzhou]
    println personInfo
    // 方式三:
    personInfo.putAll(from)
    println personInfo // [name:Surpass, age:28, loc:Shanghai, dst:Shengzhen, src:Hanzhou, from:Wuhan, to:Beijing]
    
    • 7.删除Map元素

        删除Map元素,一般使用方法remove(key)clear,示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    
    personInfo.remove("name")
    println personInfo // [age:28, loc:Shanghai]
    
    personInfo.clear()
    println personInfo // [:]
    
    • 8.Map迭代

        Map迭代,一般使用方法each,示例如下所示:

    def personInfo=[name:"Surpass",age:28,loc:"Shanghai"]
    
    // 方式一
    personInfo.each{ item ->
      println item.key + ":" + item.value
    }
    
    // 方式二
    personInfo.each{ k,v ->
       println k + ":" + v
    }
    
    // 方式三
    personInfo.eachWithIndex{ item,index ->
      println index + ":" + item.key + ":" + item.value
    }
    
    // 方式四
    
    personInfo.eachWithIndex{ k,v,index ->
     println index + ":" + k + ":" + v
    }
    

        最终的输出结果如下所示:

    name:Surpass
    age:28
    loc:Shanghai
    
    name:Surpass
    age:28
    loc:Shanghai
    
    0:name:Surpass
    1:age:28
    2:loc:Shanghai
    
    0:name:Surpass
    1:age:28
    2:loc:Shanghai
    

    相关文章

      网友评论

        本文标题:Jenkins实践指南-03-Groovy基础知识02

        本文链接:https://www.haomeiwen.com/subject/gapofdtx.html