Java使用正则得到字符串所有的字符_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java使用正则得到字符串所有的字符

Java使用正则得到字符串所有的字符

 2014/3/30 9:15:27  53873039oycg  程序员俱乐部  我要评论(0)
  • 摘要:最近看到一个有趣的问题,Stringstr="abcd",如何使用正则得到str的所有字符,结果"a,b,c,d"。不是很简单吗,上代码:publicstaticvoiderrorMethodTest(StringsrcStr){String[]strArr=srcStr.split("");for(Stringstr:strArr){System.out.print(str+",");}System.out.println();}结果为:,a,b,c,d,前面多了一个""。如何正确的得到a
  • 标签:使用 Java 字符串 正则

??????? 最近看到一个有趣的问题,String str="abcd",如何使用正则得到str的所有字符,结果"a,b,c,d"。

??????? 不是很简单吗,上代码:

???????

class="java" name="code">public static void errorMethodTest(String srcStr) {
		String[] strArr = srcStr.split("");
		for (String str : strArr) {
			System.out.print(str + ",");
		}
		System.out.println();
	}

?

???? 结果为:

,a,b,c,d,

?

??? 前面多了一个""。

???? 如何正确的得到a,b,c,d呢?参考了博客http://www.coderanch.com/t/497299/java/java/Splitting-String-characters

???? 正确方法为:?

?

public static void strSplitMethodTest(String srcStr) {
		String[] strArr = srcStr.split("(?<!^)");
		for (String s : strArr) {
			System.out.print(s + ",");
		}
		System.out.println();
	}

?

?? 或者

?

public static void strSplitMethod2Test(String srcStr) {
		String[] strArr = srcStr.split("(?!^)");
		for (String str : strArr) {
			System.out.print(str + ",");
		}
		System.out.println();
	}

??? 上面的那玩意是什么呢?是正则表达式中的反向预查,正向预查,参考了博客http://my.oschina.net/lxpan/blog/27907

?

??? (?<=pattern) 反向匹配
??? (?<!pattern) 反向不匹配

??? (?=pattern) 正向匹配
??? (?!pattern) 正向不匹配

?

???? 测试例子

public static void myTest() {
		String testStr = "foreach eachfor forall allfor alleach eachall";
		Pattern p = Pattern.compile("(?<!for)each");// 匹配任何前面不带有for的each
		Matcher match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
		System.out.println("--------------------------------");
		p = Pattern.compile("(?<=for)each");// 匹配任何前面带有for的each
		match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
		System.out.println("-------------------------------");
		p = Pattern.compile("for(?!each)");// 会匹配任何后面不是each的for
		match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
		System.out.println("-------------------------------");
		p = Pattern.compile("for(?=each)");// 会匹配任何后面是each的for
		match = p.matcher(testStr);
		while (match.find()) {
			System.out.println(match.group());
		}
	}

?

???? 结果为:

???

each
each
each
--------------------------------
each
-------------------------------
for
for
for
-------------------------------
for

?

?? 上面的不够直观,使用RegexBuddy软件结果如下:

??

?

??

?

?

???? 不使用正则怎么做呢

????

public static void strMethodTest(String srcStr) {
		char[] strArr = srcStr.toCharArray();
		for (char c : strArr) {
			System.out.print(c + ",");
		}
		System.out.println();
	}

?

???? 全文完

?

?

?

?

?

????

?

?

??

?

?

?

?

  • 大小: 70.1 KB
  • 大小: 73.5 KB
  • 大小: 69.6 KB
  • 大小: 79.3 KB
  • 查看图片附件
上一篇: Java函数式编程(十)字符串及方法引用 下一篇: 没有下一篇了!
发表评论
用户名: 匿名