日期:2014-05-20  浏览次数:20557 次

==================处理字符串===============
有个字符串,如下.能否有正则表达式什么的,我有一个关键字,比如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

不知道是不是你要的结果。
------解决方案--------------------
引用:
有个字符串,如下.能否有正则表达式什么的,我有一个关键字,比如world,要把world这一行删除?
我现在想到的时,按\n split成数组,再遍历。但是不知有没有其他更好的方法?
Java code?123456"hello:aaaaaaa \nworld:bbbbbbb \nni:ccccccc    \nhao:ddddddd   \n"
          ……



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);
}
}
}