求一个正则表达式写法:如何将方括号总的空格替换为\t 字符串为String str="120.128.3.242 music.baidu.com - [04/Jul/2012:22:59:59 +0800] 200";如果只想把[] 内的空格替换为\t,正则表达式如何写。非常感谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 120.128.3.242 music.baidu.com - ([.*?]) 200 String str="120.128.3.242 music.baidu.com - [04/Jul/2012:22:59:59 +0800] 200"; str= str.substring(str.indexOf("[")+1, str.indexOf("]")).replaceAll(" ", "\t") ; System.out.println(str); 2楼的处理完了只剩下一小段了吧? String str="120.128.3.242 music.baidu.com - [04/Jul/2012:22:59:59 +0800] 200"; str = str.replaceAll("(\\[[^\\s]*)\\s([^\\]]*\\])","$1\t$2"); System.out.println(str); 如果[]里面有多个空格键(\u0020)的话, 你这个solution就不好使了. ldh911 真是强人,膜拜,佩服五体投地。能否请假如下这个正则?用 空格 分割如下字符串,但是这个空格不在 [] 和 "" 之内。就是说str字符串包括[]和"",分割时,[] 和 "" 的空格不分割String str = "27.152.72.211 music.xx.com - - [04/Jul/2012:22:59:59 +0800] \"GET /bg.png HTTP/1.1\" \"http://aa.bb.com/mobile?fr=mp3hp\" ID=85C4B31A:FG=1"; 对,ldh911大神,就是这个意思。把除[]和""范围以外的空格,全部替换为 \t ;[]和"" 里面的空格不用替换。有什么好的办法实现? 不用想得太复杂,如果[]只有一个的话,用substring将内容分3块解决即可。 想了想,正则还是不太容易处理,只能编写函数来处理了: String str = "120.128.3.242 music.baidu.com - [04/Jul/2012:22:59:59 +0800] 200 \"GET /bg.png HTTP/1.1\" \"http://aa.bb.com/mobile?fr=mp3hp\" ID=85C4B31A:FG=1"; System.out.println(spaceToTab(str)); private static String spaceToTab(String str) { char[] cs = str.toCharArray(); int brace = 0; boolean quota = false; for (int i = 0; i < cs.length; i++) { switch (cs[i]) { case '[': brace++; break; case ']': brace--; break; case '"': quota = !quota; break; case 32: // ASCII of Space if (!quota && brace==0) cs[i] = '\t'; } } return String.valueOf(cs); } 求代码执行结果 java访问网页问题 请教:struts2 如何实现连接池的管理和使用? 请教关于ArrayList的数据存储结构【菜鸟上路】 java 换算时区的问题 我是自学者 请问。。。怎样用多线程写聊天程序的服务器端? 请大家推荐一个使用redis做存储的java开源项目 急 指点者一定有分!!! 请各位大哥介绍本java书,我想买~~~~~ 老师布置的两道题啊 不会做求解 怎样给JMenuItem设置事件,使之点击生成对话框提示
String str="120.128.3.242 music.baidu.com - [04/Jul/2012:22:59:59 +0800] 200";
str= str.substring(str.indexOf("[")+1, str.indexOf("]")).replaceAll(" ", "\t") ;
System.out.println(str);
String str="120.128.3.242 music.baidu.com - [04/Jul/2012:22:59:59 +0800] 200";
str = str.replaceAll("(\\[[^\\s]*)\\s([^\\]]*\\])","$1\t$2");
System.out.println(str);
如果[]里面有多个空格键(\u0020)的话, 你这个solution就不好使了.
能否请假如下这个正则?用 空格 分割如下字符串,但是这个空格不在 [] 和 "" 之内。就是说str字符串包括[]和"",分割时,[] 和 "" 的空格不分割
String str = "27.152.72.211 music.xx.com - - [04/Jul/2012:22:59:59 +0800] \"GET /bg.png HTTP/1.1\" \"http://aa.bb.com/mobile?fr=mp3hp\" ID=85C4B31A:FG=1";
把除[]和""范围以外的空格,全部替换为 \t ;[]和"" 里面的空格不用替换。有什么好的办法实现?
String str = "120.128.3.242 music.baidu.com - [04/Jul/2012:22:59:59 +0800] 200 \"GET /bg.png HTTP/1.1\" \"http://aa.bb.com/mobile?fr=mp3hp\" ID=85C4B31A:FG=1";
System.out.println(spaceToTab(str));
private static String spaceToTab(String str) {
char[] cs = str.toCharArray();
int brace = 0;
boolean quota = false;
for (int i = 0; i < cs.length; i++) {
switch (cs[i]) {
case '[':
brace++;
break;
case ']':
brace--;
break;
case '"':
quota = !quota;
break;
case 32: // ASCII of Space
if (!quota && brace==0) cs[i] = '\t';
}
}
return String.valueOf(cs);
}