通过字符串获取查询符合的内容的数据

我想从内容中提取某个内容,没法用sql,只能通过代码来实现
比如:下面截图里面我想提取编辑的值 入截图的:江亚蔓

img

有没有好的办法?

可以使用正则表达式或者直接使用字符串截取。需要我可以帮你写:

  String editor = null;
    try {
        editor = str.substring(str.indexOf("编辑:")+3);
        editor = editor.substring(0,editor.indexOf("\n"));
    } catch (Exception e) {
        // TODO: handle exception
    }
    if(editor!=null) {
        System.out.println("已找到编辑的名字:"+editor.trim());
    }else {
        System.out.println("未找到编辑的名字");
    }
    

运行:

img

怎么可能没法用sql???楼上说的正则表达式不是能做到嘛

基于new Bing的编写:
正则表达式实现:
在这个代码中,我先定义了一个字符串变量 content,它包含了你提供的文本。然后,我定义了一个正则表达式 编辑:(.*?)\n 来匹配 编辑: 后面的名字,这里使用了非贪婪模式来捕获名字字符串。最后,使用 String 类的 matches() 方法来找到第一个匹配项,并使用 group(1) 方法获取第一个捕获组的值。



import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class one {
    public static void main(String[] args) {
        String content = "String str=春日赏樱\n" +
                "Vol.1 \n" +
                "SPRING DAY \n" +
                "++++++++ \n" +
                "学院风、古风,\n" +
                "或者浅色清新衣服都很适合哦\n" +
                "摄影:胡一凡\n" +
                "总编:杜术林副总编:张科\n" +
                "主编:付斯颖 |操梅 编辑:江亚蔓、小红\n" +
                "两江新区融媒体中心出品\n" +
                "未经允许,不得转载\n" +
                "声明:除原创内容及特别说明外,稿件文字及图片均来自网络及各大主流媒体。版权归原作者所有。如认为内容侵权,请联系我们删除。";

        String regex = "编辑:(.*?)\\n";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(content);

        if (matcher.find()) {
            String editorName = matcher.group(1);
            System.out.println(editorName);
        }
    }
}


为了测试,我在编辑:后面加多了一个小红

img

如果您想在SQL中提取字符串中的"编辑:"后面的值,您可以使用SUBSTRING和CHARINDEX函数。以下是示例代码:

SELECT SUBSTRING(content, CHARINDEX('编辑:', content) + 3, CHARINDEX(CHAR(10), content, CHARINDEX('编辑:', content)) - (CHARINDEX('编辑:', content) + 3)) AS editor_name FROM documents;


在这个代码中,我们首先使用CHARINDEX函数找到字符串中"编辑:"的位置,然后使用SUBSTRING函数提取该位置后面的值。

其中第二个CHARINDEX函数用于找到下一个换行符,以便仅返回编辑者名字。为防止在编辑者名字中出现多个换行符或不包含换行符的情况,我们通过计算两个CHARINDEX之间的差来获取正确的编辑者名字长度。

请记得将上述代码中的表名、列名,替换为您实际所用的表和列名称。

数据格式都是这样?那你可以获取到“编辑:”然后根据下标去截取

引用new bing部分回答作答:
所有数据格式如果不一样的话,并且要提取的信息是各种各样的话,那没有一套固定的代码能满足,如果都是一套样式的内容,都是提取编辑的值,那就如下:
你可以使用Java中的正则表达式来提取这个字符串中的编辑名字。下面是一个示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    String str = "春日赏樱 \n" +
        "Vol.1 n" +
        "SPRING DAY \n" +
        "女+ n 十\n" +
        "“学院风、古风,n +" +
        "或者浅色清新衣服都很适合哦n” +" +
        "摄影:胡一凡n” +" +
        "总编:杜术林副总编:张科 n”+" +
        "主编:付斯颖 操梅编辑: 江亚蔓\n" +
        "两江新区融媒体中心出品 n十\n" +
        "未经允许,不得转载 n” +" +
        "声明:除原创内容及特别说明外,稿件文字及图片均来自网络及各大主流媒体。版权归原作者所有。如认为内容侵权,请联系我们删除。";

    // 正则表达式匹配编辑的名字
    Pattern pattern = Pattern.compile("编辑: (\\S+)");
    Matcher matcher = pattern.matcher(str);

    if (matcher.find()) {
      String editorName = matcher.group(1);
      System.out.println("编辑的名字是:" + editorName);
    } else {
      System.out.println("没有找到编辑的名字。");
    }
  }
}

运行该程序将输出:

编辑的名字是:江亚蔓


该程序首先定义了一个正则表达式 编辑: (\S+),该表达式匹配以 编辑: 开头,后面跟着一个或多个非空白字符的字符串。然后使用 Matcher 对象来执行正则表达式匹配。如果找到匹配的字符串,则使用 group(1) 方法来获取第一个捕获组中的字符串,即编辑的名字。