码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Groovy语法大全


    文章目录

    • 一、Win10安装groovy环境
      • `1.打开groovy自带的编辑器`
    • 二、数值和表达式
      • `1.整数运算符`
      • `2.混合运算`
      • `3.赋值`
        • 第一次使用变量,需要用def去声明变量
        • 变量被称作标识符,标识符命名规则
        • 判断变量是否为整数
    • 三、字符串和正则表达式
      • `1.字符串索引`
      • `2.基本操作`
      • `3.正则表达式`
      • `4.字符串替换`
      • `5.常用操作`
        • 字符串分割
        • 判断字符串是否为数字
    • 四、列表、映射和范围
      • `1.列表`
        • 列表方法
        • 遍历列表
        • 以逗号分隔,存到列表中
        • 把列表元素拼接成字符串
      • `2.映射(类似Python的字典)`
        • 映射方法
        • 映射取值方法对比
        • 遍历映射
      • `3.范围`
        • 包含范围的示例
        • 范围方法
    • 五、基本输入输出
      • `1.基本输出`
      • `2.格式化输出`
      • `3.简单输入`
    • 六、学习案例1
    • 七、方法
      • 一个简单的方法定义
    • 八、判断语句
      • if
    • 九、文件
      • 写文件
    • 十、闭包
      • 一个简单的参数化闭包
      • 使用隐参数it
    • 十一、对象
      • 追加datas这个Map对象到parameter
    • 十二、异常处理
      • `捕获异常,并抛出异常`
      • `不抛出异常`
    • 十三、选择语句
    • 十三、其它
      • 查看数据类型


    参考书籍《GROOVY入门经典》

    一、Win10安装groovy环境

    参考文章:https://blog.csdn.net/mathew_leung/article/details/87922869

    1.打开groovy自带的编辑器

    DOS命令行输入groovyconsole
    在这里插入图片描述

    二、数值和表达式

    1.整数运算符

    在这里插入图片描述

    2.混合运算

    在这里插入图片描述

    3.赋值

    第一次使用变量,需要用def去声明变量

    def conut = 0			#声明并初始化变量
    count = conut + 1		#在当前值的基础上加1
    
    • 1
    • 2

    变量被称作标识符,标识符命名规则

    在这里插入图片描述

    判断变量是否为整数

    if(value instanceof Integer) {
    	println "是整型"
    } else {
    	println "不是整型"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、字符串和正则表达式

    1.字符串索引

    在这里插入图片描述
    在这里插入图片描述

    2.基本操作

    在这里插入图片描述

    3.正则表达式

    =~表示模糊匹配;==~表示精确匹配

    4.字符串替换

    webVersion = webVersion.replaceAll("\n","")		//替换字符串后面的换行符
    def test = url.replaceAll("http(s)?:","")		//替换http:或者https:为空
    
    • 1
    • 2

    5.常用操作

    字符串分割

    split()方法不支持同时对多个字符进行分割,tokenize()支持
    在这里插入图片描述

    Jenkins高级篇之Pipeline实践篇-2-groovy中字符串操作split()和tokenize()区别

    判断字符串是否为数字

    def num = '1106502'
    if(! num.isInteger() && ! num.isFloat()) {
          println "不是数字"
      }else{
          println "是数字"
      }
      println num
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    VALUE.contains('abc')		//字符串包含abc
    VALUE.startsWith('test')	//以test开头为真
    VALUE.endsWith('.txt')		//VALUE字符串以.txt结尾为真
    
    • 1
    • 2
    • 3

    四、列表、映射和范围

    参考文章:
    Groovy的List(列表)操作

    1.列表

    在这里插入图片描述

    def numbers = [11, 22]		#定义一个新列表
    numbers << 13				#[11, 22, 13]
    numbers + [14, 15]			#[11, 22, 13, 14, 15]
    numbers - [11]				#[22, 13]
    
    • 1
    • 2
    • 3
    • 4

    列表方法

    def arr = new ArrayList()			//定义一个空列表
    def HostIpList = []					//定义一个空列表
    alist.contains(4)					//检查4是否在alist列表中
    alist.remove('b')					//删除列表中的b元素
    HostIpList = strings.split("\n")		//以换行符进行分割,返回一个列表
    def Flag = fileExists '/data/host.yaml'			//存在返回真,不存在返回假
    alist -= [1]	//删除列表alist中值为1的元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    遍历列表

     for(ip in ipList) {		//for里面的变量ip是个局部变量
          println ip
      }
    或者
    [1, 2, 3].each {println it}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    以逗号分隔,存到列表中

    def nfs_server = "192.168.1.1,192.168.1.2"
    def nfsIPList = nfs_server.split(",")
    
    • 1
    • 2

    把列表元素拼接成字符串

    string1 = alist[0] + '-' + alist[1]
    
    • 1

    2.映射(类似Python的字典)

    简单的映射在这里插入图片描述

    映射方法

    在这里插入图片描述
    在这里插入图片描述

    映射取值方法对比

    def paramMap = ["a":1, "b":2]
    
    • 1

    paramMap.a和paramMap.get[‘a’]都可以获取a的值

    如果paramMap中没有a,paramMap.a返回null,paramMap.get[‘a’]会抛出异常

    遍历映射

    //方法一
    def paramMap = ["a":1, "b":2]
    paramMap.each{entry ->
     	def key = entry.key
        def value = entry.value
        println key
        println value
    }
    //方法二
     for (Map.Entry<String, List> entry:paramMap .entrySet()){
        println entry.getKey()
        println entry.getValue()
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    def map1 = [:]		//定义空映射
    
    • 1

    3.范围

    包含范围的示例

    在这里插入图片描述

    范围方法

    在这里插入图片描述

    五、基本输入输出

    1.基本输出

    println "Hello World!"
    
    • 1

    2.格式化输出

    在这里插入图片描述

    3.简单输入

    在这里插入图片描述

    六、学习案例1

    def library =[ 'Ken' : ['Groovy','UML'],
                    'John' : ['java']
                  ]
    library['Sally'] = ['Basic']
    library['John'] = library['John'] << 'OOD'
    library['Ken'].contains('UML')     
    library.keySet().sort()
    library['Ken'].size
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    七、方法

    一个简单的方法定义

    def greetings() {
        println 'Hello World!'
    }
    greetings()
    
    • 1
    • 2
    • 3
    • 4

    八、判断语句

    if

    if(表达式){
    	cmd
    } else {
    	cmd
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    九、文件

    写文件

    outFile = new File(‘/tmp/t1.txt’)
    outFile.append('Hello World'+'\n') 
    
    • 1
    • 2

    十、闭包

    表示一段可执行的代码库,类似于方法(函数)。

    一个简单的参数化闭包

    def clos={param -> println "Hello ${param}"}
    clos('World')
    
    • 1
    • 2

    解释:

    param为形参,World为实参
    
    • 1

    使用隐参数it

    def clos={println "Hello ${it}"}
    clos.call('World')
    
    • 1
    • 2

    十一、对象

    追加datas这个Map对象到parameter

    def parameter = new HashMap()
    parameter.putAll(datas)
    
    • 1
    • 2

    十二、异常处理

    捕获异常,并抛出异常

    timestamps
    {
        try {
    	    语句块
    	}//try
    	catch(Exception err) {
    		throw new Exception("*******Caught an exception: ${err}")
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    不抛出异常

    try {
       sh 'lsd'
    } catch (ignored) {
        println 'not throw exception'
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    十三、选择语句

    switch (type) {
             case "mysql":
    			println("mysql数据库")
                 break
             case "oracle":
                 println("oracle数据库")
                 break
             default:
                 println("前面没有匹配下,执行default下面的语句")
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    十三、其它

    查看数据类型

    println(alist.getClass())
    
    • 1
  • 相关阅读:
    【Nginx】nginx隐藏版本号
    Windows 下编译 TensorFlow 2.12.0 CC库
    常见背包问题
    计算机与软件技术系毕业设计(论文)实施意见-计算机毕业设计论文怎么写
    Dominosa/数邻(2) | C++ | BFS
    【摸鱼神器】UI库秒变LowCode工具——列表篇(二)维护json的小工具
    jQuery---如何区分DOM对象和jQuery对象
    ApiPost接口测试工具
    ResultMap详解(处理字段名和属性名不一致)
    QtWebassembly遇到的一些报错问题及解决方案
  • 原文地址:https://blog.csdn.net/anqixiang/article/details/127447471
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号