码迷,mamicode.com
首页 > 编程语言 > 详细

java split的一个小问题

时间:2016-01-08 00:17:28      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

今天测试人员提了一个小需求,ip地址A.B.C.D ,ABCD任意一个域为空时当做0处理。例如  192... ,后台当做192.0.0.0处理。

我想到的方法是用字符串的split方法,首先取得ABCD四个域的值,假设text1为ip地址控件取得的实际文本值,text2为转换后的值。

String text1 = "192...";
String[] fields = text1.split("\\.");
System.out.println(Arrays.toString(fields)); //[192]

用于匹配的正则表达式如果再字符串尾部连续匹配到n个字符串,这n个字符串都是被忽略的。

本例中用于匹配的正则表达式为"\\.",也就是讲将点号转义为普通的符号。点号再"192..."尾部连续匹配了三个点号。所以这三个点号被忽略,实际上相当于

text1="192",换个例子:

String text1 = "88814534212";
String[]  fields = text1.split("[12345]");
System.out.println(Arrays.toString(fields));

猜猜这个结果是多少?

 

还没解决我的实际问题,实际应用场景中,用户必然可以输入"192...","..."等ip,我需要转换成"192.0.0.0"及"0.0.0.0",

我想到的方案是:

String text1 = "...";
String[] fields = (text1+" ").split("\\.");
System.out.println(Arrays.toString(fields)); //[, , 3, ]

字符串尾部加上一个空格后,点号在字符串尾部不能匹配到字符串,所以没有被忽略的字符串,所以从前往后split后的数组中依次放入了"","",""," ",我只需要将空字符串或空格用0替换就达到了我想要的结果。

String text1 = "..."; // 带分割的字符串text1
String[] fields = (text1 + " ").split("\\.");// 把text1用.分割成数组fields
System.out.println(Arrays.toString(fields)); for (int i = 0; i < fields.length; i++) { if (fields[i].trim().equals("")) { fields[i] = "0"; } } String text2 = ""; for (String string : fields) { text2 += string + "."; } text2 = text2.substring(0, text2.lastIndexOf(".")); System.out.println(text2);

 

java split的一个小问题

标签:

原文地址:http://www.cnblogs.com/tibit/p/5111699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!