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

java 找子字符串
String first="#listen_addresses = 'localhost' # what IP address(es) to listen on";
String second= "listen_addresses = '*'";
注:first中间的空白是制表符:

问题:怎么实现将first中的#listen_addresses = 'localhost'(#listen_addresses = 'localhost'可能在first中的任何位置)替换成second的字符串

------解决方案--------------------
(#listen_addresses = 'localhost'可能在first中的任何位置) 
这句话是啥意思?

你贴几个可能的位置的例子上来
------解决方案--------------------
你是不是想替换 单引号里边的内容 为 * 呀? 
如果是,下面第一行那个符号‘#’是怎么回事 ,下面的第二行第三行都只有一个单引号,这又么回事 


first="#listen_addresses = 'localhost' # what IP address(es) to listen on";
first=“h listen_addresses = 'localhost hkafdnfkldahdanfdbjka” n=2
first=“hhk listen_addresses = 'localhost afdnfkldahdanfdbjka” n=4


无论是不是 你把上面三行的 替换后的结果 写出来



------解决方案--------------------
制表符就是"\t"
for example
Java code
String first="#listen_addresses = 'localhost' # what IP address(es) to listen on";
String second= "listen_addresses = '*'";
String third = first.replace("#listen_addresses\t=\t'localhost'", second);
System.out.println(third);

------解决方案--------------------
探讨
first="#listen_addresses = 'localhost' # what IP address(es) to listen on";
替换后的结果是
first="listen_addresses = '*' # what IP address(es) to listen on";



是先在将first中找到"#listen_addresses = 'localh……

------解决方案--------------------
Java code

public class Test {
    public static void main(String[] args) {
    
    String first="#listen_addresses = 'localhost' # what IP address(es) to listen on";
    String second= "listen_addresses = '*'";
    String result = first.replace("#listen_addresses = 'localhost'", second);
    System.out.println(result);
    
    
    //根据我的测试,中间的空白符不是制表符 
    //但是上面的方法直接些\\s 又不行,所以写下面的方法,应该能满足你了
    String regex = "#listen_addresses\\s=\\s'localhost'";     
    Matcher matcher = Pattern.compile(regex).matcher(first);//
    result =  matcher.replaceAll(second);
    System.out.println(result);        
        
    }
}