虽然这不是本意,但是我们完全将 Groovy 作为脚本语言使用。我们可以像 Java 那样(严谨?)定义变量的类型,又可以像 PHP 那样不用定义变量类型,还能自由使用 Maven 仓库中的包。Groovy 满足我们对脚本语言的全部期望。当然,这些都是个人感受,肯定不符合软件工程的实践要求,但是我们用的很开心。

该笔记将整理:在 Groovy 中,常用的字符串操作,以及常见问题处理。

# 02/19/2021 添加模板引擎的使用方法,无比快乐。

字符串分割(split)

"abc,def".split(",")
// 如果使用 Pipe(|) 进行分割:
"abc|def".split("\\|")
 

需要注意,split() 返回 String[] 而不是 List 对象。

重复字符串若干次(*)

println "#" * 10
println "#".multiply(10)
 

以行为单位遍历(eachLine)

方法一、使用 eachLine 进行遍历:

def multiline = '''\
Groovy is closely related to Java,
so it is quite easy to make a transition.
multiline.eachLine {
    if (it =~ /Groovy/) {
        println it  // Output: Groovy is closely related to Java,
 

方法二、先分割,后遍历:

def multiline = '''\
Groovy is closely related to Java,
so it is quite easy to make a transition.
def lines = multiline.split("\\r?\\n");
for (String line : lines) {
    println line
 

判断字符串是否匹配正则表达式

使用 ==~ 操作符:

assert "2009" ==~ /\d+/
String regex = /^somedata(:somedata)*$/
assert "somedata" ==~ regex
// 注意事项:
// 如果是 多行字符串,应该用 =~ 判断,而 ==~ 会返回 false
 

使用正则表达式进行字符串替换

def mphone = "1+555-555-5555"
println mphone.replace(/5/, "3")
// 1+333-333-3333
println mphone.replaceFirst(/5/, "3")
// 1+355-555-5555
 

字符串追加(printf alternative)

据我们所知,函数 printf 只能为字符串追加空格,以使其达到某个长度。

在 Groovy 中,可以使用 padLeft() 或者 padRight() 方法:

println "123123".padLeft(10, "#") // #### 123123
 

嵌入控制字符

我们需要在字符串中添加控制字符。比如,嵌入 ETX 字符,应该使用 def foo="\u0003" 语句。

使用模板引擎

详细内容,参考 Template engines 文档。

我们这里只进行简单的机械复制,遇到问题在进一步讨论:

def text = 'Dear "$firstname $lastname",\nSo nice to meet you in <% print city %>.\nSee you in ${month},\n${signed}'
def binding = ["firstname":"Sam", "lastname":"Pullara", "city":"San Francisco", "month":"December", "signed":"Groovy-Dev"]
def engine = new groovy.text.SimpleTemplateEngine()
def template = engine.createTemplate(text).make(binding)
def result = 'Dear "Sam Pullara",\nSo nice to meet you in San Francisco.\nSee you in December,\nGroovy-Dev'
assert result == template.toString()
 

「Groovy」- 常用 MAP 操作
「Groovy」- 常用 List 操作

Simple Groovy replace using regex - Stack Overflow
java - How to check if a String matches a pattern in Groovy - Stack Overflow
Pad a String with Zeros or Spaces in Java | Baeldung
How can I pad a String in Java? - Stack Overflow
Ascii Table - ASCII character codes and html, octal, hex and decimal chart conversion
Control codes - converting to ASCII, hex or decimal
Adding non printable chars to a string in Java? - Stack Overflow
Java String Split Newline - Grails Cookbook
Groovy Goodness: Working with Lines in Strings - Messages from mrhaki
Template engines
Groovy - split() - Tutorialspoint
java - Grails: Splitting a string that contains a pipe - Stack Overflow

永久地址:Groovy之常用字符串操作(保存网址不迷路 ????)问题描述虽然这不是本意,但是我们完全将 Groovy 作为脚本语言使用。我们可以像 Java 那样(严谨?)定义变量的类型,又可以像 PHP 那样不用定义变量类型,还能自由使用 Maven 仓库中的包。Groovy 满足我们对脚本语言的全部期望。当然,这些都是个人感受,肯定不符合软件工程的实践要求,但是我们用的很开心。该笔记将整理:在 Groovy 中,常用的字符串操作,以及常见问题处理。# 02/19/2021 添加模 void contextLoads() { String arr="shgah_ashj_sjahb_hajs_is"; String[] array=arr.split("_"); for(String i :array){ System.out.println(i); // a.split("_"); --> 以 ‘_’为分隔符 分割字符串a 一、认证概述 HarmonyOS应用开发者高级认证要求开发者掌握鸿蒙的核心概念和端云一体化开发、数据、网络、媒体、并发、分布式、多设备协同等关键技术能力,具备独立设计和开发鸿蒙应用能力。通过这一认证,开发者能够系统地提升自己在HarmonyOS应用开发领域的技能水平,为未来的职业发展打下坚实基础。 二、认证流程 注册与实名认证:首先,开发者需要在华为开发者官方网站注册账号并进行实名认证。这是获取认证资格的前提条件。 课程学习:认证前,开发者需要参加HarmonyOS应用开发者高级认证的培训课程。这些课程涵盖了HarmonyOS的核心概念、开发技术、分布式应用开发、UI设计等关键内容。开发者可以通过线上或线下的方式进行学习,确保自己掌握所需的知识和技能。 参加考试:完成课程学习后,开发者可以报名参加HarmonyOS应用开发者高级认证考试。考试内容主要涵盖所学课程的重点知识和技能,通过考试即可获得认证资格。
Groovy中,可以使用字符串的分片操作来截取字符串。分片操作需要指定开始截取的位置(begin)、截取结束的位置(end)和步长(step)。分片操作与引用数组元素类似,使用一对中括号,并在中括号中用冒号(:)分隔begin、end和step。下面是一个示例: ```groovy def str = "Hello, World!" def slicedStr = str[0:5] // 截取从索引0到索引5的子字符串 println slicedStr // 输出 "Hello" 在上面的例子中,我们使用分片操作截取了字符串"Hello, World!"的前5个字符,结果是"Hello"。请注意,索引是从0开始的。 除了分片操作Groovy还为字符串注入了许多其他方法,可以通过扩展StringGroovyMethods类来使用这些方法。例如,可以使用asBoolean函数将字符串强制转换为布尔值。该函数的定义如下: ```groovy public static boolean asBoolean(CharSequence string) { return string.length() > 0; 该函数接受一个字符串作为参数,并返回一个布尔值。如果字符串的长度大于0,则返回true,否则返回false。 总结起来,Groovy提供了丰富的字符串操作方法,包括分片操作和其他注入的方法,可以方便地对字符串进行截取和转换。
「GitLab CI/CD」- You are not allowed to download code from this project @20210402 weixin_42432482: 执行 Pipeline 的用户是哪个 「Nginx」- daemon off; @20210122 盘古开天者: 最后一句说的不太对,Supervisor 要已前台运行( daemon off )才能进行控制stop 「Docker Compose」- 在构建时,使用网络加速(代理) @20210130 沉思的归零者: 代理配置没有生效,望能探讨下这个问题。 发现构建时连接了/etc/docker/daemon.json配置中的阿里云地址,即使去掉了daemon.json文件,构建的代理配置仍然没有生效,直接连海外去了,没有通过代理去访问,代理本身是可靠的,甚至改用局域网代理以保证了其可靠性; 代理配置无论是配置在docker-compose.yml还是在Dockerfile,均没有生效。 我的环境一: AlmaLinux release 8.7 (Stone Smilodon) 4.18.0-425.3.1.el8.x86_64 Docker 24.0.2 Docker Compose version v2.18.1 我的环境二: CentOS Linux release 7.9.2009 (Core) 3.10.0-1160.el7.x86_64 Docker Version: 23.0.1 docker-compose version 1.29.2 两个环境的配置相同: docker-compose.yml代理配置: [code=plain] version: "2.7" services: nginx: build: context: ./nginx dockerfile: ./nginx_Dockerfile args: - http_proxy="http://192.168.130.78:8080" - https_proxy="http://192.168.130.78:8080" container_name: "nginx" [/code] Dockerfile代理配置: cat nginx/nginx_Dockerfile [code=plain] FROM nginx:1.23.1 ENV http_proxy http://192.168.130.78:8080 ENV https_proxy http://192.168.130.78:8080 [/code]