有个字符串,如下.能否有正则表达式什么的,我有一个关键字,比如world,要把world这一行删除?
我现在想到的时,按\n split成数组,再遍历。但是不知有没有其他更好的方法?
"
hello:aaaaaaa \n
world:bbbbbbb \n
ni:ccccccc \n
hao:ddddddd \n
"
------解决方案--------------------
按\n split成数组,再遍历。但是不知有没有其他更好的方法?
为什么要split呀?
String s = "hello:aaaaaaa \nworld:bbbbbbb \nni:ccccccc \nhao:ddddddd\nworld:bbbbbbb \naaakkkk";
s.replaceAll("world:[^\n]*\n", "");
得到结果:
hello:aaaaaaa
ni:ccccccc
hao:ddddddd
aaakkkk
不知道是不是你要的结果。
------解决方案--------------------
Lz可以把这个结果写到数据库或者文件里做进一步操作
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringRex
{
public static void main(String[] args)
{
String str = "hello:aaaaaaa \n world:bbbbbbb \n ni:ccccccc \n hao:ddddddd \n";
//第一位是a到z出现一次或多次,第二位是":",第三位是a-z出现一次或多次
//\\s+代表空白字符,包括Tab建
//\\\n 就等同于\n 前两个斜杠是转义字符
String rex = "[a-z]+:[a-z]+\\s+\\\n";
Pattern p = Pattern.compile(rex);
Matcher m = p.matcher(str);
while(m.find())
{
String name = m.group();
if(name.contains("world"))
{
String delName = name;
System.out.println("已删除的字符串:"+delName);
continue;
}
System.out.println(name);
}
}
}