Jenkins實踐指南-03-Groovy基礎知識02

2.4.4 數據類型

2.4.4.1 字符串類型

2.4.4.1.1 字符串定義

    [作者:Surpassme]在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 轉義字符串

    [作者:Surpassme]在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字符

    [作者:Surpassme]當部分字符在你所使用的鍵盤不存在,可以使用Unicode字符,示例如下所示:

println 'The Euro currency symbol: \u20AC'

    輸出結果如下所示:

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

    [作者:Surpassme]在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.判斷是否包含特定內容

    [作者:Surpassme]判斷是否包含特定內容一般使用方法contains,示例如下所示:

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

    [作者:Surpassme]查看字符串長度一般使用方法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.判斷以特定內容開始或結束

    [作者:Surpassme]轉換爲字符串長度一般使用方法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類型

    [作者:Surpassme]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 浮點型

    [作者:Surpassme]在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類型

    [作者:Surpassme]在Groovy中,bool類型只有兩個值truefalse,常用於邏輯判斷等場景,示例如下所示:

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

2.4.4.4 List類型

2.4.4.4.1 基本定義

    [作者:Surpassme]在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 基本定義

    [作者:Surpassme]在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值

    [作者:Surpassme]獲取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添加元素

    [作者:Surpassme]向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

原文地址:https://www.jianshu.com/p/c05d677173de

本文同步在微信訂閱號上發佈,如各位小夥伴們喜歡我的文章,也可以關注我的微信訂閱號:woaitest,或掃描下面的二維碼添加關注:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章