A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦兰之 中级黑马   /  2013-9-14 00:41  /  2349 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 秦兰之 于 2013-9-14 23:35 编辑

  今天老师留下的作业,我不明白了,是用a-zA-Z0-9的正则表达式,那一些特殊符号怎么写?要是提取字符又没有方法,或者是有,我没找到?

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 赞一个!

查看全部评分

7 个回复

正序浏览
我想是你是想找这个吧  你可以看看这个,或在API中找下正则表达式,类 Pattern.

字符
x字符 x
\\反斜线字符
\0n带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh带有十六进制值 0x 的字符 hh
\uhhhh带有十六进制值 0x 的字符 hhhh
\t制表符 ('\u0009')
\n新行(换行)符 ('\u000A')
\r回车符 ('\u000D')
\f换页符 ('\u000C')
\a报警 (bell) 符 ('\u0007')
\e转义符 ('\u001B')
\cx对应于 x 的控制符
字符类
[abc]a、b 或 c(简单类)
[^abc]任何字符,除了 a、b 或 c(否定)
[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]]a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]d、e 或 f(交集)[/td]
[a-z&&[^bc]]a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]]a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
.任何字符(与行结束符可能匹配也可能不匹配)
\d数字:[0-9]
\D非数字: [^0-9]
\s空白字符:[ \t\n\x0B\f\r]
\S非空白字符:[^\s]
\w单词字符:[a-zA-Z_0-9]
\W非单词字符:[^\w]
POSIX 字符类(仅 US-ASCII)
\p{Lower}小写字母字符:[a-z]
\p{Upper}大写字母字符:[A-Z]
\p{ASCII}所有 ASCII:[\x00-\x7F]
\p{Alpha}字母字符:[\p{Lower}\p{Upper}]
\p{Digit}十进制数字:[0-9]
\p{Alnum}字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct}标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}可见字符:[\p{Alnum}\p{Punct}]
\p{Print}可打印字符:[\p{Graph}\x20]
\p{Blank}空格或制表符:[ \t]
\p{Cntrl}控制字符:[\x00-\x1F\x7F]
\p{XDigit}十六进制数字:[0-9a-fA-F]
\p{Space}空白字符:[ \t\n\x0B\f\r]

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1 赞一个!

查看全部评分

回复 使用道具 举报
给你一字符串, 你给我说这里面包含多少种字符, 答案是一种两种or三种其中之一是吧?

那笨方法(与底层方法逻辑相似)又多了去了, 我明儿就学正则表达式
这种简单功能得高效率完成, 最好一个方法搞定.
回复 使用道具 举报
kmter 发表于 2013-9-14 09:29
正则表达式我目前还没有学到, 不过用其他方法似乎也能完成统计一个字符串中有多少种字符. ...

似乎只能提取到长度,意思有偏差。我的理解是字母一种,数字一种,特殊字符下划线@#一种。
回复 使用道具 举报
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
回复 使用道具 举报
正则表达式我目前还没有学到, 不过用其他方法似乎也能完成统计一个字符串中有多少种字符.
  1. public int Count(String str) {
  2.         StringBuilder stb = new StringBuilder(str);
  3.         int num = 0;
  4.         for(int i = 0; i < stb.length(); i++) {
  5.                 int index;
  6.                 int start = i+1;
  7.                 while((index=stb.indexOf(String.valueOf(stb.charAt(i)), start)) != -1) {
  8.                         stb.deleteCharAt(index);
  9.                         start = index-1;
  10.                 }
  11.                 num++;
  12.         }
  13.        
  14.         return num;
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 很给力!

查看全部评分

回复 使用道具 举报
妹子?那么晚还在做作业

点评

五十步笑百步乎?  发表于 2013-9-14 09:09
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马