记录第一次使用ChatGPT编程

#前言

作为一名程序员,我已经工作多年,熟悉了很多编程语言、框架和工具,然而,最近我遇到了一个非常有意思的挑战:用 ChatGPT 来帮助我编写一个复杂的 Java 程序。在这一过程中,我既感受到了 AI 带来的便捷,也体验到了它在编程中的优势。呜呼,chatGPT如果早点出来,我就不用自己动手编写代码了,比我自己编的好啊。

我给GPT出的题目 : 模板字符串替换。例如: “{ {花生壳}}里有{ {花生仁}},{ {花生壳}}可以做{ {饲料}}” 是要转换的模板字符串,{ { }} 两个定界符中间的文字需要替换, 给定一个要替换的名词对应表
”花生壳” -> ”核桃壳”, ”饲料” -> ”健身器”.”花生仁”–>”核桃仁”, 替换后的字符串是:“核桃壳里有核桃仁,核桃壳可以做健身器”. 条件是使用java语言和正则表达式替换技术。最后使用java动态代理技术,封装成一个静态工具类。哇塞,啥都能干啊。

下面是我与chatGPT的对话内容,只是感觉啰嗦了一点。第一次体验chatGPT,不知道有没有更简洁的对话方式。欢迎GPT高手吐槽


注 :黄色的部分 是我说的内容
user

使用java语言,用正则表达式,编写一个循环遍历搜索字符串的程序

ChatGPT
你可以使用 Java 中的正则表达式来编写一个循环遍历并搜索字符串的程序。这里有一个示例程序,它使用 PatternMatcher 类来实现正则表达式的搜索,并通过循环遍历所有匹配项。

示例代码:

import java.util.regex.*;

public class RegexSearchExample {
   
    public static void main(String[] args) {
   
        // 定义要搜索的目标字符串
        String text = "This is a test string. Test 123. Another test string!";
        
        // 定义正则表达式模式:例如搜索所有包含 "test" 的单词
        String regex = "test";
        
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        
        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(text);
        
        // 使用 while 循环遍历所有匹配项
        while (matcher.find()) {
   
            System.out.println("Found match at index " + matcher.start() + ": " + matcher.group());
        }
    }
}

说明:

  1. Pattern.compile(regex, Pattern.CASE_INSENSITIVE):编译一个正则表达式,第二个参数 Pattern.CASE_INSENSITIVE 是用来忽略大小写的。
  2. matcher.find():该方法在目标字符串中查找下一个匹配项,返回 true 如果找到匹配项,false 如果没有更多匹配。
  3. matcher.start():返回当前匹配项在字符串中的起始索引。
  4. matcher.group():返回当前匹配项的内容。

输出:

Found match at index 10: test
Found match at index 25: Test
Found match at index 41: test

通过这个程序,你可以用正则表达式遍历字符串中的每个匹配项。你可以根据自己的需求调整正则表达式来匹配不同的模式。
user

匹配以“{ {”开头,以“}}”结尾的任意字符串的正则表达式

ChatGPT
要匹配以 { { 开头,并以 }} 结尾的任意字符串,可以使用以下的正则表达式:

\{\{.*?\}\}

解释:

  • \{\{ :匹配字面量的 { { 。大括号是正则表达式的特殊字符,所以我们使用 \ 进行转义。
  • .*?:表示任意字符(.*),? 表示非贪婪匹配,尽量匹配最短的字符串。这是为了确保我们只匹配到第一个 }},而不是所有的 }}
  • \}\}:匹配字面量的 }},同样使用 \ 进行转义。

示例 Java 代码:

import java.util.regex.*;

public class RegexExample {
   
    public static void main(String[] args) {
   
        // 定义要搜索的目标字符串
        String text = "This is {
   {a test}} string with {
   {multiple}} matches.";
        
        // 定义正则表达式:匹配以{
   {开头,}}结尾的任意字符串
        String regex = "\\{\\{.*?\\}\\}";
        
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regex);
        
        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(text);
        
        // 使用 while 循环遍历所有匹配项
        while (matcher.find()) {
   
            System.out.println("Found match: " + matcher.group());
        }
    }
}

输出:

Found match: {
  {a test}}
Found match: {
  {multiple}}

在这个示例中,程序将会匹配所有符合 { {...}} 格式的字符串。如果你有多个这样的子串,它会逐个找到并打印出它们。

如果你希望匹配包含换行符的字符串,可以使用 Pattern.DOTALL 标志:

Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);

这样就能确保 .*? 可以匹配换行符。
user

修改一下示例程序,将匹配到的字符串 替换成 --{ {}}之间的内容–

ChatGPT
如果你想修改程序,使得匹配到的字符串被替换为 --{ {}} 之间的内容,你可以使用 Matcher.replaceAll() 方法来替换匹配到的内容。我们可以提取 { {}} 中的内容,并将其格式化为 --{ {内容}}--

修改后的代码:

import java.util.regex.*;

public class RegexExample {
   
    public static void main(String[] args) {
   
        // 定义要搜索的目标字符串
        String text = "This is {
   {a test}} string with {
   {multiple}} matches.";
        
        // 定义正则表达式:匹配以{
   {开头,}}结尾的任意字符串
        String regex = "\\{\\{(.*?)\\}\\}";
        
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regex);
        
        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(text);
        
        // 使用 replaceAll() 方法替换匹配项
        String result = matcher.replaceAll(matcher1 -> "--{
   {" + matcher1.group(1) + "}}--");
        
        // 输出替换后的结果
        System.out.println(result);
    }
}

代码解释:

  1. \\{\\{(.*?)\\}\\}:正则表达式中的 (.*?) 用来捕获 { {}} 中的内容。这样,我们可以提取出 { { }} 之间的部分。
  2. matcher.replaceAll(matcher1 -> "--{ {" + matcher1.group(1) + "}}--"):使用 replaceAll() 方法进行替换。在这里,我们通过 matcher1.group(1) 获取捕获的内容(即 { {}} 中的文本),并将其格式化为 --{ {内容}}--
  3. 输出替换后的字符串。

输出:

This is --{
  {a test}}-- string with --{
  {multiple}}-- matches.

通过这种方式,你可以将匹配到的 { {}} 之间的内容替换为 --{ {内容}}--
user

将匹配到的内容格式化为 --内容–

ChatGPT
如果你想将匹配到的 { {}} 之间的内容直接替换为 --内容--,可以去掉 { { }},只保留中间的部分。下面是修改后的示例代码。

修改后的代码:

import java.util.regex.*;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhuwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值