我想从内容中提取某个内容,没法用sql,只能通过代码来实现
比如:下面截图里面我想提取编辑的值 入截图的:江亚蔓
有没有好的办法?
可以使用正则表达式或者直接使用字符串截取。需要我可以帮你写:
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("未找到编辑的名字");
}
运行:
怎么可能没法用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);
}
}
}
为了测试,我在编辑:后面加多了一个小红
如果您想在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) 方法来获取第一个捕获组中的字符串,即编辑的名字。
密码散列,盐,用户身份证号等固定长度的字符串应该使用char
而不是varchar 来存储,这样可以节省空间且提高检索效率
。