学了这么久Java编程,头一回特么地用它干了件正事~~ 本帖最后由 gdx9125 于 2011-11-29 08:37:24 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 做文字处理.split还是很方便的啊 打好基础,学习完javase 建议学习javaee。 我觉得这个记事本加excel就可以搞定。 public void testSpit(){ String s ="B8:AC:6F:4A:93:1E=33G04|192.168.3.70"; String[] ss = s.split("=.*\\|"); StringBuffer sb = new StringBuffer(); sb.append(ss[1]).append(" ").append(ss[0]); System.out.println(sb.toString()); } 最好不要在main中抛出异常,可以用try语句快 字符串加io操作,确实是很基础,不过也是必不可少的JAVA操作。其实按照你上面的物理mac对应ip地址的写法,我觉得用properties文件来存效率会高点。 刚学了JAVA用来处理实际问题确实有些成就感。虽然处理这个问题可以用EXCEL来解决,不过用自己的方法更开心。 我还没入门,不知道JAVA什么感觉 我用 Excel 给搞定了。 JAVA 正在学习中 …… LZ 很强大。 LZ努力,我也写了一段code public static void main(String[] args) { String macString = "B8:AC:6F:4A:93:1E=33G04|192.168.3.70"; String ipString = getIpString(macString); System.out.println(ipString); } static String getIpString(String macString){ return new StringBuilder() .append(macString.substring(macString.lastIndexOf("|") + 1, macString.length())) .append(" ") .append(macString.substring(0, macString.indexOf("="))).toString(); } 其实我得解释一下数据源是这样的一个文本格式:……B8:AC:6F:4A:93:1E=33G04|192.168.3.70B8:AC:6F:48:CE:3B=33G05|192.168.3.71B8:AC:6F:4A:96:D8=33G06|192.168.3.72……这个文本文件里至少有276条有效数据,但是我不知道如何将这些数据一条一条的复制Excel中对应的表格中?如果是一行行的复制的话,我就可以一行行的更改样式得了。呵呵,其实我挺笨的,还真不知道如何将多条数据一个个添加到每一个表格里,不过真是跟你学到东西了,Excel的功能很强大,领教了~~ 鼓励之余,提醒注意一点,关流等释放资源的操作,放在finally块。 直接全选,然后打开excel直接粘贴就行了。其实如果是我,我也会用excel,或者直接将txt档导入MSSQL,然后用sql语句在查询分析器里面写更实在。就看怎么灵活运用了,方法实在太多了。select right(col1,12)+' ' + left(col1,17)select replace(right(col1,12),':','')+' ' + left(col1,17) 命令行版的D:\>type a.txtB8:AC:6F:4A:93:1E=33G04|192.168.3.70B8:AC:6F:48:CE:3B=33G05|192.168.3.71B8:AC:6F:4A:96:D8=33G06|192.168.3.72D:\>for /f "tokens=1,3 delims==|" %i in (a.txt) do @echo %j %i192.168.3.70 B8:AC:6F:4A:93:1E192.168.3.71 B8:AC:6F:48:CE:3B192.168.3.72 B8:AC:6F:4A:96:D8D:\>for /f "tokens=1,2,3,4,5,6,7,8 delims==|:" %i in (a.txt) do @echo %i%j%k%l%m%n=%p,%oB8AC6F4A931E=192.168.3.70,33G04B8AC6F48CE3B=192.168.3.71,33G05B8AC6F4A96D8=192.168.3.72,33G06 看来楼主还没用Excel干过正事~~哈哈 awk -F"|" '{print $2, $1}' a.txt|cut -f1 -d '=' 呵呵… 其实直接复制,在 excel 里直接粘贴 就可以了。excel 会自动给你换单元格,还是很方便的 … 楼主的 java 代码写的不错。看了,学习了。 [dell@andy ~] $ cat a.txtB8:AC:6F:4A:93:1E=33G04|192.168.3.70B8:AC:6F:48:CE:3B=33G05|192.168.3.71B8:AC:6F:4A:96:D8=33G06|192.168.3.72[dell@andy ~] $ awk -F'[=|]' '{print $3, $1}' a.txt192.168.3.70 B8:AC:6F:4A:93:1E192.168.3.71 B8:AC:6F:48:CE:3B192.168.3.72 B8:AC:6F:4A:96:D8 如果你用eclipse的话,推荐一种简单的办法:1,把文本贴到一个文件中2,ctrl+f查找打开,勾选上“Regular expressions(中文版应该叫“正则表达式”)”;将(\w{2}(\:\w{2}){5})\=.*?\|(\d{1,3}(\.\d{1,3}){3})全部替换成$3 $1不严格匹配的话或用([^=]*)\=.*?\|(.*)\n^全部替换成$2 $1 哈,话说我以前用程序干的第一件正事是CSDN的抢SF机器人!小无耻。 统计软件也可以搞定,比如SPSS、STATA等等 楼主加油吧。其实遇到日志文件的处理,还可以用下linux的命令,效率高很多的哦~ 直接用UE或editplus的替换功能就可以,替换时可以写正则表达式,这样更方便 一个健壮的程序需要加上一些异常数据的控制,比如:String[] s = str.split("=");String[] s1 = s[1].split("\\|");文件中有一行数据如果只是一个空行,或者是一行不正确的数据(其中没有“=”或者没有“|”)那这段程序还能继续跑么? 百花齐放啊~~ 比较简单的说~~ 偏向与正则和脚本~~ Excel也不错~~ 用sql就有点大材小用了 主要是怎么方便怎么来~~~ 链表实现任意长整数乘法运算 java API文档字段摘要怎么用?? JTable的Jcheckbox显示问题 请问这个程序会有错误,请大家看一下,这到底错在哪里啊,急... javamail如何下载外网的附件(如163、yahoo、126之类)?? 求银行帐号的匹配算法 幫助看看下面的問題 请教一个菜鸟级的问题:这两个func()有什么不同? 请问哪位有比较好的JBUILD教程,请给我个下载连接 关于robocode的源程序的一点建议 如何打包 GC.fillPolygon颜色不准确
String s ="B8:AC:6F:4A:93:1E=33G04|192.168.3.70";
String[] ss = s.split("=.*\\|");
StringBuffer sb = new StringBuffer();
sb.append(ss[1]).append(" ").append(ss[0]);
System.out.println(sb.toString());
}
String macString = "B8:AC:6F:4A:93:1E=33G04|192.168.3.70";
String ipString = getIpString(macString);
System.out.println(ipString);
} static String getIpString(String macString){
return new StringBuilder()
.append(macString.substring(macString.lastIndexOf("|") + 1, macString.length()))
.append(" ")
.append(macString.substring(0, macString.indexOf("="))).toString();
}
……
B8:AC:6F:4A:93:1E=33G04|192.168.3.70
B8:AC:6F:48:CE:3B=33G05|192.168.3.71
B8:AC:6F:4A:96:D8=33G06|192.168.3.72
……
这个文本文件里至少有276条有效数据,但是我不知道如何将这些数据一条一条的复制Excel中对应的表格中?
如果是一行行的复制的话,我就可以一行行的更改样式得了。呵呵,其实我挺笨的,还真不知道如何将多条数据一个个添加到每一个表格里,不过真是跟你学到东西了,Excel的功能很强大,领教了~~
select replace(right(col1,12),':','')+' ' + left(col1,17)
B8:AC:6F:4A:93:1E=33G04|192.168.3.70
B8:AC:6F:48:CE:3B=33G05|192.168.3.71
B8:AC:6F:4A:96:D8=33G06|192.168.3.72D:\>for /f "tokens=1,3 delims==|" %i in (a.txt) do @echo %j %i
192.168.3.70 B8:AC:6F:4A:93:1E
192.168.3.71 B8:AC:6F:48:CE:3B
192.168.3.72 B8:AC:6F:4A:96:D8D:\>for /f "tokens=1,2,3,4,5,6,7,8 delims==|:" %i in (a.txt) do @echo %i%j%k%l%m%n=%p,%o
B8AC6F4A931E=192.168.3.70,33G04
B8AC6F48CE3B=192.168.3.71,33G05
B8AC6F4A96D8=192.168.3.72,33G06
呵呵… 其实直接复制,在 excel 里直接粘贴 就可以了。excel 会自动给你换单元格,还是很方便的 … 楼主的 java 代码写的不错。看了,学习了。
B8:AC:6F:4A:93:1E=33G04|192.168.3.70
B8:AC:6F:48:CE:3B=33G05|192.168.3.71
B8:AC:6F:4A:96:D8=33G06|192.168.3.72[dell@andy ~] $ awk -F'[=|]' '{print $3, $1}' a.txt
192.168.3.70 B8:AC:6F:4A:93:1E
192.168.3.71 B8:AC:6F:48:CE:3B
192.168.3.72 B8:AC:6F:4A:96:D8
1,把文本贴到一个文件中
2,ctrl+f查找打开,勾选上“Regular expressions(中文版应该叫“正则表达式”)”;
将
(\w{2}(\:\w{2}){5})\=.*?\|(\d{1,3}(\.\d{1,3}){3})
全部替换成
$3 $1不严格匹配的话或用
([^=]*)\=.*?\|(.*)\n^
全部替换成
$2 $1
String[] s1 = s[1].split("\\|");文件中有一行数据如果只是一个空行,或者是一行不正确的数据(其中没有“=”或者没有“|”)那这段程序还能继续跑么?