添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
坚强的鸵鸟  ·  Search | MIT Sloan·  1 周前    · 
机灵的莲藕  ·  こども本の森 神戸·  1 月前    · 
留胡子的红薯  ·  Grafana ...·  1 年前    · 
println str[-1] // g 获取字符串倒数第一个的值 println str[2] // c println str[0,2,3] // acd 获取多个下标的值,用“,”号隔开 println str[0..3] // abcd 获取字符串 第一个到第四个的值,可用于截取 println str[0..<4] // abcd 获取字符串 第一个到第四个的值,可用于截取 “《” 指不包含下标4 的那个 println str[4..1] // edcb 从第5个开始 往回截取到 第2个 println str[4..-1] // efg 从第五个开始 截取到 最后一个

二、复制字符串 “*”

注意:字符串中 * 不是算数运算符,不能当乘法用,如 “1”*3

结果应为 : “111”,而不是 3

def str = "陈" println str*3 //陈陈陈

三、获取长度:str.length()  /  str.size()

中文字符串、英文、数字字符串长度都只占一个字节, 在java 中 中文占2个字节

def str = "大珠小珠落玉盘" println str.length() //7 def str2 = 'abcd' println str2.length() //4

四、字符串操作

1、字符串查询:str.indexOf("str2")  返回 字符指定字符首次出现的下标,未查询到则返回-1   。

def str = "大珠小珠落玉盘" println str.indexOf("珠") //1 //第二个参数表示从哪个下标开始检索 println str.indexOf("珠",4) //-1

2、字符串截取:strs.subString()

str.subString(beginIndex,endIndex)   :下标从0开始,属于开闭和空间,即可[beginIndex,endIndex)  解释为:包含beginIndex,不包含 endIndex

def str = "大珠小珠落玉盘" println str.substring(1) //珠小珠落玉盘 从第二个截取 截取到末尾 println str.substring(0,4) //大珠小珠

3、字符串替换:str.replaceAll("替换元素","值")

def str = "hello world" str = str.replaceAll("l","a") println str //heaao worad println webVersion.replaceAll("\n","") //替换字符串后面的换行符 def url = "http://www.baidu.com" println url.replaceAll("http(s)?:","") //替换http:或者https:为空 url = "https://www.baidu.com" println url.replaceAll("http(s)?:","") //替换http:或者https:为空

4、字符串分割成数组:str.split("分隔符") / str.tokenize("分隔符")

def str = "hello world" println str.split("l") //返回数组,允许保留空字符串 [he, , o wor, d] println str.tokenize("l") //返回list,不会保留空字符串 [he, o wor, d]

5、大小写转换:str.toUpperCase()、str.toLowerCase()

def str = "hello-World" println str.toUpperCase() //HELLO-WORLD println str.toLowerCase() //hello-world

6、字符串忽略大小写比较:str.compareToIgnoreCase("str2")

def str = "hello-world" def str2 = "HELLO-WORLD" def str3 = "hello-w" def str4 = "hello-worldaa" println str.compareToIgnoreCase(str2) //0 等于 println str.compareToIgnoreCase(str3) //4 str 大 println str.compareToIgnoreCase(str4) //-2 str 小

7、判断是否以指定字符串开头/结尾:str.startsWith("xx")   /   str.endsWith("xx")

def str = "hello-world" println str.startsWith("he") //true println str.startsWith("hd") //false println str.endsWith("ld") //true println str.endsWith("0d") //false

8、字符串的拼接 :str +=str2  / str = str.concat(str2)

def str = "hello" str+="world" //或者 str = str.concat("world") println str //helloworld

9、字符串删除:  str -= str2

def str = "hello world" str-="ld" println str // hello wor

10、统计指定字符串出现的次数:str.count("xx")

def str = "hello world" println str.count("l") //3

11、查询是否包含某字符串:str.contains("xx")

def str = "hello world" println str.contains("ld") //true

12、判断是否为数字

def str = '1106502' if(!str.isInteger() && !str.isFloat()) { println "不是数字" }else{ println "是数字" println str //是数字 //1106502 def clos={param -> println "Hello ${param}"} clos('World') //Hello World //或者cols.call('World') //使用隐参数it clos={println "Hello ${it}"} clos('World') //Hello World

2、异常处理

try { }catch(Exception err) { throw new Exception("*******Caught an exception: ${err}") //不抛出异常 try { } catch (ignored) {

3、单引号、双引号、三引号的区别

def str = "张三" //单引号字符串,字符串会被原样输出,不进行变量替换或转义字符处理 println 'Hello,${str}' //Hello,${str} //双引号字符串,可以进行变量替换和字符串插值。这意味着可以在字符串中嵌入变量或表达式 println "Hello,${str}" //Hello,张三 //三重双引号字符串允许多行文本,并支持字符串插值和转义字符,进行鸳鸯输出 str2 = """ 33333 44444444 5555555555 666666666666 77777777777777 println str2 //输出结果 33333 44444444 5555555555 666666666666 77777777777777

4、默认值赋值-Elvis 运算符

class Foo{ def name = "123" def foo = new Foo() println foo.name ?:"bob" //123 如果有值,则为值,类似于三元运算符 //println foo.name == null ? "bob" : foo.name class Foo2{ def name def foo1 = new Foo2() println foo1.name ?:"bob" //bob 如果空或者null 则默认为 bob

5、避免空指针-安全解引用操作符?

//此操作符用来避免发生空指针异常的情况,只需要在语句里面添加一个问号(?)即可,看例子。 String name = person?.getName() //当 person 为 null 时,对应的name 属性也设置为 Null。同样,对方法调用也同样适用。

6、使用工具类

(1)  ConfigSlurper

ConfigSlurper实用类用来读取配置信息,它是一种 Groovy 脚本。像 Java 中的*.properties的文件,可以使用“.”导航符进行访问,它也可以应用在闭包的配置的值和任何对象类型中。

def config = new ConfigSlurper().parse(''' appid = '93772j23ysk29vu3m' secret = 'r2y4j56lj2h00l212g56j34fi23ud8h29123d87kvnc2' app.date = new Date() app.version = 3.1 app.name = '愉快办' app { desc = "这是一个很好的app,它的名字叫做${app.name}" def properties = config.toProperties() println "appid is ${properties.appid}" println "app.date is ${properties.'app.date'}" println "app.desc is ${properties.'app.desc'}" //输出结果 appid is 93772j23ysk29vu3m app.date is Thu Jan 11 11:52:47 CST 2024 app.desc is 这是一个很好的app,它的名字叫做愉快办

(2)  Expando

xpando工具类用来创建动态扩展对象。你可以为对象添加属性和方法,在动态元编程中此类非常实用

def ex = new Expando() ex.name = "Dark" // 或者 ex.name = { -> "Dark"} ex.say = {String str -> "${ex.name} says:${str}"} def say = ex.say('hello') println say //Dark says:hello

(3)  PropertyChangeEvent

Groovy 提供了可供观察的 List,Map和 Set。当这些集合在新增,删除,修改元素时会触发PropertyChangeEvent( java.beans package)事件。需要注意的是,这个事件不仅会触发,它还持有属性的名字以及属性的新旧值。

def observ = new ObservableList() observ << '124' observ << 'qwe' println observ //[124, qwe] def listen = {e-> println e println "newValue is ${e.newValue},oldValue is ${e.oldValue}" observ.addPropertyChangeListener(listen) observ[0] = "zhangsan" observ[1] = "lisi" println observ //输出结果 groovy.util.ObservableList$ElementUpdatedEvent[propertyName=content; oldValue=124; newValue=zhangsan; propagationId=null; source=groovy.util.ObservableList@a8eb98cc] newValue is zhangsan,oldValue is 124 groovy.util.ObservableList$ElementUpdatedEvent[propertyName=content; oldValue=qwe; newValue=lisi; propagationId=null; source=groovy.util.ObservableList@a91c9260] newValue is lisi,oldValue is qwe [zhangsan, lisi]
## Groovy 字符串 前言:因为笔者本身就有 Java 基础,因此在学习 Groovy 时,主要学习 Groovy Java 的区别,相同之处就不再花时间去学习了。这次来了解一下 Groovy 字符串 的基础部分,看看 Groovy Java 定义 字符串 有什么不一样的地方。 Groovy 字符串 的分类; Groovy 字符串 的4种定义方式; String 和 GString 的哈...
常量文本字符(text literals)代表了字符链形式的一种东西,叫 字符串 groovy 可以直接实例化 java .lang.String对象。GString在其他 语言 里也叫插值 字符串 。 单引号 字符串 就是纯的 Java 字符串 ,不支持插值操作。所有的 groovy 字符串 都可以使用'+'连接操作 三引号 字符串 def str = " Groovy is a powerful dynamic language for the JVM." def strArr = str.split(" ") 这样,strArr就是一个包含每个单词的 字符串 数组了。除了空格以外,还可以使用其他分隔符,例如逗号、冒号等等。如果要使用正则表达式进行拆分,则可以直接传入正则表达式作为参数。例如: def str = " Groovy ,is,a,powerful,dynamic,language,for,the,JVM." def strArr = str.split(/,/) 这样,strArr就是一个包含每个单词的 字符串 数组了,逗号被用作分隔符。另外,如果要限制拆分后的 字符串 数组长度,则可以在split()方法中传入第二个参数,例如: def str = " Groovy is a powerful dynamic language for the JVM." def strArr = str.split(" ", 3) 这样,strArr就是一个包含前三个单词的 字符串 数组了。
uniapp 解决微信小程序报错getLocation:fail the api need to be declared in the requiredPrivateInfos 三只坚果: 挺实用的可以获取高德地图数据了,但是好像在提交审核时会给拦截掉吧,需要开通getLocation权限(个人开发) /* 小程序特有相关 */ "mp-weixin" : { "appid" : "", "setting" : { "urlCheck" : false "permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序定位" "requiredPrivateInfos": ["getLocation", "chooseLocation"], "usingComponents" : true, //延迟代码加载 "lazyCodeLoading": "requiredComponents" uniapp 解决微信小程序报错getLocation:fail the api need to be declared in the requiredPrivateInfos 一个有梦的程序海: "requiredPrivateInfos": ["getLocation", "chooseLocation"],