Java该怎么用c fill方法()方法来给例如手机号中间几个数字替换呢,用*替换,我是定义的一个int

java上学期全部知识点_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
java上学期全部知识点
&&java上学期全部知识点
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢遵循java中的命名规范,不能用动词作类名,可是我要“增加XXX&该怎样命名好呢?
”增加“本来就是一个动词,用什么替代好呢?
09-08-26 &
一份出色的Resume,是向外企求职的关键之一。不了解有关的常识和程式,不花费相当的心思来展示,
  以有纯正娴熟的英文功底,决不能获得单位的青睐。在一大堆错误百出、英文表达能力低劣或平庸,
  毫无针对性和创造性的Resume中,你的那份若能让人眼睛一亮,成功的机会必将大大增加,
  以下我试着结合一个具体的例子给出说明和评述。
  Balance Sheet:
  基本方法选取适当的工作后,必须看清招聘广告上所列出的每项要求,再将自己的学历、
  能力与兴趣逐一与之比较,作一张balance sheet.
  例如,一则关于marketing management trainee和job requirement是这样写的:
  We are looking for a competent person to fill the captioned position:
  University graduate majors in Marketing Management. Prepared to develop career in the commercial field
  -outgoing personality
  -Able to communicate with different levels
  -Good knowledge in PC operations -Proficiency in written and spoken English/Mandarin
  则你相应地考虑自己的qualification的选择和表述,如你可写(与上列各项对应):
  -University graduate with major in Marketing
  -Having actively participated in Business club's activities and learned accounting and management
  -Good in communication with people and like a lot of out door activities know how to tackle
  with people from all walks of life
  -Skillful in operating Words,Excel,Lotus1-2-3,etc
  -Fluent in English and studied advanced level of Mandarin
  这个方法的好处是可让求职者清楚了解该职位是否适合自己,而本身资料又是否切合要求,而且,明白了各项要求后
  ,就可依据每一点在履历表上重点提出自己在该方面的强项。突出卖点(selling point),将之放在最吸引别人的地方,
  使招聘者一眼可见,有利于present自己。
  工作经验的陈述
  工作经验是一份resume中令招聘者相当感兴趣的一项内容,善加措词是必不可忽视的要务。
  刚毕业,何来工作经验?其实,客下读书时的兼职、实习、实践,以至所曾参加的一些课外活动-协助助出版学校刊物、
  举办活动,展览、宣传……都可算是工作经验、不过,表达起来要有针对性地展开,列出那些与所找工作有关连的项目重点介绍,
  必要时更可使用summary的方式,给招聘者深入的了解。
  我手头这份材料的相关表这实在简陋呆板:
  6/8 General Clerk, IBM
  5/8 Account clerks, Manley Toy Trading
  4/8Salesgirl,Esprit.
  倘能换一种表述如:
  Three years of job experience in different positions have offered me opportunities to understand
  different job aspects.
  -As a General Clerk(IBM),Accounts clerk (Manley Toy Trading),I have learned how to prepare purchasing
  orders, place orders, handle accounting mattery, check voucher,……also(Salesgirl, Esprin)developing
  the technique of sellina, serving and stocking.
  岂非能更好地突出个人工作经验,吸引招聘者的注意力!
  Job Objective通常,一般求者只会在履历表开端简单地写上所应征的职位-&Position Applied: Management
  Trainee&或&I am appling for……&其实,若懂得利用这小小空间写出自己的事业目标(job objective),
  能显示出你对该工作的热诚及憧憬,能令招聘者对你加倍留意。
  比如这个不错的例子job objective To begin as a Marketing Management Trainee, with opportunity to
  advance to executive level and contribute to the development of firm.
  其实,这位外企人士所谈的关于准备RESUME的技巧,完全可以应用到中文简历上来。各位读者可以尝试一下。
  如何写英文简历 -
  英文简历的格式结构括页眉部分、教育背景、工作经历和个人资料四部分。
  1、页眉部分
  1)名字,名字有7种写法:
  例如“李扬”: 1) Yang LI 2) YANG LI 3) Yang Li 4) Yang Li
  5) Li, Yang 6) Li Yang 7) LI Yang
  我们认为这7种都有可接受,比如说第四种-Yang Li ,很方便招聘人员,尤其是人事部经理为中国人;
  但标准的、外资公司流行的简历中的名字写法,则是第二种,YANG LI。
  有人用粤语拼写自己的姓氏。比如,王写成Wong,李写成Lee。这只是香港人的拼法,并不是国际的拼法。
  另外,有一小部分人用外国人的姓,如Mary Smith,这是非常不可取的。因为如果你用外国人的姓,
  别人会认为你是外国人,或者你父亲是外国人,或者你嫁给了外国人。
  双字名,也有四种写法,例: 1)Xiao-feng 2)Xiao-Feng 3)Xiaofeng 4)Xiao Feng,
  列出四种来,我们建议用第三种,Xiaofeng,最简单方便。大家一看就知是名而不是姓,要不然,
  大家有可能会误认为你是姓肖的。
  2)地址
  北京以后要写中国,但不必用PRC等,因为用China简单清楚。邮编的标准写法是放在省市名与国名之间,
  起码放在China之前,因为是中国境内的邮编。
  3)电话
  Ⅰ前面一定加地区号,如(86-10)。因为你是在向外国公司求职,你的简历很可能被传真到伦敦、纽约,
  大家不知道你的地区号,也没有时间去查。另外,国外很流行“user friendly”,即想尽办法给对方创造便利,
  尤其是在找工作时,更要加深这一意识。
  Ⅱ 8个号码之间加一个“-”,如。这样,认读拨打起来比较容易,否则,第一次打可能会看错位。
  Ⅲ 区号后的括号和号码间加空格,如 (86-10) 。这是英文写作的规定格式。
  Ⅳ 写手机或者向别人通报手机时,也有一定的规范,要用“4-3-4原则”,如“4”。
  Ⅴ 传真号千万不要留办公室的,免得办公室的同事都知道你想跳槽。如果家里有传真号,最好告诉对方,
  万一他找不到你,可以发几个字,比较快;将来对方发聘书或材料时,比较方便。
  Ⅵ 国外很流行留言电话,有人为找工作,专门去买留言电话。
  2、教育背景
  1)时间要倒序,最近的学历要放在最前面。
  2)学校名要大写并加粗,这样便于招聘者迅速识别你的学历。
  3)地名 右对齐,全部大写并加粗。地名后一定写中国。例如,海口(Haikou)的拼写与日本北海道
  (Hokaido)的拼写很相近。读简历的可能是外国人,不知道的会搞不清楚是哪个国家。
  4)学历,可以把学历名称放在最前。
  5)社会工作,担任班干部,只写职务就可以了;参加过社团协会,写明职务和社团名,如果什么职务都没有,
  写“member of club(s)”。社团协会,国外一般都用club。不必写年月和工作详情,有些可留待工作经历中写。
  6)奖学金,一般用一句话概括。如果有多个,也争取用一句话概括。
  7)成绩,如果不是前五名,建议不写。因为如果排在五名之外,感觉你不是一个最优秀的学生。一旦写上,
  有些人会穷追不舍地发问,让你尴尬。
  3、个人资料
  1)名称,有四种写法:Personal, Personal Information, Other Information, Additional Information。
  无论是教育背景、工作经历,还是个人资料,既可以首字母大写,也可以全部字母大写,还可以全部字母小写。
  另外,名称可以写在最左侧,也可居中。
  2)语言,有几个层次。“Native speaker of”指母语;从严谨的角度讲,“Fluent in”显得更流利;
  “English as working language”显得不非常流利,但可信度更高; “Some knowledge of” 会一些,
  没有把握的千万别写。在面试中,语言是最轻松的、最容易被测试的,一旦被考倒,他会认为你在撒谎,
  甚至认为通篇都有很多撒谎的地方。
  3)电脑,如果几个软件,有的熟练,有的熟悉,建议只写软件名。完全没把握的,一点儿不熟悉的,
  千万不要写。不要以为没有电脑,就不会考你,他也会考你一两个关键用法。如果真的用的很多,
  不妨用“Frequent user of”。
  4)资格证书,最需要注意的是,有些人将注册会计师笼统地翻译成CPA,但全世界各国都有自己的CPA,
  有些是互不承认的,所以一定要写上国别,写明考取年份。 TOEFL、GRE和GMAT,我们建议都不写,
  因为一般外企公司不愿意雇用很快就要出国的人。
  5)兴趣爱好
  Ⅰ 写强项。弱的一定不要写,面试人员说不定对哪个项目感兴趣,有时会跟你聊两句,一旦是你的弱项,
  很尴尬的,显出窘态,丧失自信,这对你是很不利的。更重要的是,他会觉得你在撒谎。
  Ⅱ 要写也只写两到三项。因为极少有人在很多方面都很强。当然,确实有的人七八样都玩得挺好的,
  但一般人不相信个人的强项有特别多,所以你也没必要写那么多,以免给人轻浮的感觉。
  Ⅲ 不具体的爱好不写,如sports、music、reading。大家不知道你喜好什么,
  或者让大家觉得你根本就没有真正的爱好,更糟糕的是,人们会认为你的写作水平很差。
  Ⅳ 举几个用词。如travel,如果你喜欢旅行,而有些工作需要经常出差,那么你写上travel是非常有利的;
  有些女性写上cooking,是很实事求是的,也给人以踏实的感觉,对于象秘书这样的职位,总是有好处的。
  4、 工作经历
  首先要强调一下,对于正在工作的人,Experience应写在Education的前面,
  而对于在校生Education则应放在Experience之前。
  1) 时间
  Ⅰ 目前的工作要最先写, 左侧写时间,如写成1998-present。
  Ⅱ 以前的工作,只写年份,如。这样的写法主要适于以下三种情况:
  一是工作时间较早;二是工作时间在两年以上;三是旨在巧妙地拉长工作时间。
  例如,如果你曾于1997年12月到1998年1月就职于某家公司,虽然只有短短两个月,
  但写成就显得工作时间较长,同时也没撒谎。
  Ⅲ 以前的工作,加上月份,如May, 1998或May 1998。
  这样的写法自然会显得精确一些,也投合银行业雇主的口味。
  Ⅳ Summer Intern(夏期工作)的几种写法。一是直接写Summer Intern,不管职务职称;
  二是写成Summer Analyst,这种写法比较适合大学本科或研究生期间的暑期工作;
  三是写Summer Assistant,这种写法适合多种情况;四是写Summer Associate,
  这一写法专指MBA学生的暑期工作。而且一般认为Summer Associate的级别会比Summer Analyst要高一些。
  2) 公司名
  公司名称应大写加粗。若全称太复杂,可以写得稍微简单一些。有些公司的全称往往不为人知,
  但缩写名却尽人皆知。比如在中国就不是每个人都知道INTERNATIONAL BUSINESS MACHINE是什么公司,
  但IBM的大名却是家喻户晓的。所以在中国,我们建议大家写IBM,因为许多外企人事经理都是中国人,
  这样写更顺眼也更顺口。而在美国,大家还是会写全称的。
  3) 地名
  地名写法与Education部分相同,这里就不再赘述。
  4) 职务与部门
  Ⅰ 从公司名称之后的第二行开始写,如果想介绍公司情况,则职务与部门应写在公司简介之后。
  Ⅱ 职务与部门应加粗,每个词的第一个字母要大写,如Manager, Finance Department。
  5) 公司简介
  Ⅰ 对于新公司、小公司或招聘公司不甚熟悉的某些行业的公司,为了保险起见都不妨介绍一两句,
  甚至对于那些业内知名的企业往往也不一定名声在外。求职者一般不会针对每家应聘的
  公司都量身定做一份专门的简历(tailor-made resume),目前可能只想在行业内跳一跳,
  但也不排除将来在别的行业发展的可能,所以不妨都略带提一下公司的简介。
  Ⅱ 有些外国人可能对中国的公司不太知道,因此要介绍一下。 千万不要觉得中国的公司很大,
  别人就一定知道,一不留神,就成了井底之蛙。例如,中国银行叫Bank of China (BOC)。
  在海外很多银行都知道中国银行,但不少人都误认为中国银行就是中国的中央银行。
  Ⅲ 简介长度以两行为宜。只用一行易与别的内容相混,而三四行就显得比较累赘。
  6) 工作经历顺序
  Ⅰ 倒序,这是非常流行的方式。
  Ⅱ 技能类别,这主要是为了强调自己的某种技能,如翻译、电脑等。此外,
  对于那些工作经历有时间断层的人,如下岗、休产假等,不妨也可使用这种方法。
  但要注意,这种写法只适合技能性比较强的情况,其它可参考前面所提到的只写年的方法加以弥补。
  如果断层时间长达两三年,则一定要解释清楚,说明确切的原因,实事求是。越诚实越坦荡,越能给人好印象。
  Ⅲ 两者结合,先按技能类别加以分类,再以倒序的方式一一列出。
  7) 工作内容
  Ⅰ 要用点句(bullet point),避免用大段文字。
  Ⅱ 点句的长度以一行为宜,最多不要超过两行;句数以三到五句为佳,最多不超过八句。
  Ⅲ 点句以动词开始。目前的工作用一般现在时,以前工作用过去时。
  Ⅳ 主要职责与主要成就,初级工作以及开创性不强的工作把主要职责放在前面,
  而较高级或开创性较强的工作则应把主要成就写在前面。
  Ⅴ 工作成就要数字化,精确化,避免使用many, a lot of, some, several等模糊的词汇,
  应尽量使用具体的数字,到底管理了多少人,销售额是多少等等。
  Ⅵ 在同一公司的业绩中,不必拘泥于时间顺序,而应秉持&重要优先&的原则。例如,
  在成就里可先写最重要的成就;在职责里可先写最高的职位,不要拘泥于倒序或正序的方法。
  关键是要使雇主在短短几秒钟之内就发现您的最高卖点。
  Ⅶ 接受培训的内容可放在每个公司的后面。我们认为培训是公司内部的,与公司业务有关,不是Education的一部分。
  8) 五个避免
  Ⅰ 长句:没有人愿意看太冗长的句子,雇主只是在扫描你的简历。
  Ⅱ 缩写:因为外行人往往很难看懂,不要先入为主的认为别人能猜到或者能查到你用的缩写。
  Ⅲ &I& (我):因为正规简历多用点句,以动词开头,是没有&我&的。
  当然若在公司简介中一定要用到一两次,也不是完全不可以。
  Ⅳ 不利因素:我们讲过简历的原则是不要撒谎,但不写不等于骗人。
  Ⅴ &Reference available upon request&:这个短语的意思是如需证明,
  可提供见证人。但在现实生活中,招聘人员认为任何人都能随便抓来一两个见证人应急。
  而且如果你在简历中也没有写上他们的名字及联系方法,这句话则完全是多此一举了。
  5、 学生简历
  之所以要把学生简历单拿出来讲一讲,是因为学生的工作经验很少,写不出东西来,
  显得页面不够丰满。要按我们在前面讲的格式,也很尴尬。因此我们在这里特别介绍一些弥补的技巧:
  1) 教育背景中写相关课程。但千万不要为了拼凑篇幅,把所有的课程都写上,这样不很有效,别人也没耐心看。
  2) 奖学金一项一行。许多学生每年都有奖学金,这样一来,也可写出三四行,甚至更多。
  3) 拉长句子。每个句子都可加入一些词拉长一些。
  4) 自然地多换行,多写点句。
  5) 加大字号。可将10号,小五改成12号,小四。
  6) 社会工作细节放在工作经历中。这样会填补工作经验少的缺陷,例如,
  你在做团支书、学生会主席等社会工作时组织过什么活动,联系过什么事,
  参与过什么都可以一一罗列。如果只做过一件事,那就应该尽量把它掰开了写,
  如领导过多少人,完成了什么事,起到了什么作用。这样一来,起码就有了三行。
  如果做了更多的事,一件一行就可以了。行文简洁的原则还是要遵守的。
  7) 暑期工作。作为大学生,雇主通常并不指望你在暑期工作期间会有什么惊天动地的成就。
  当然如果你有就更好了。不过即使实在没有,就算是在父母的单位呆过几天,也不妨写上。
  这样也算是接触过社会,了解了些行业,做过了些工作。但你一定要能说上几句才写在简历上。
  否则将来面试时,你恐怕会被问得张口结舌,显得很尴尬。
  8) 中学情况。一般都不写。不过如果你在中学时得过国际奥林匹克比赛大奖或全国性的大奖,不妨提上一笔。
  6、 特别注意
  1)无拼写错误。现在文字处理软件都有拼写检查 (Spelling Check),所以你根本没有理由拼错。
  2) 小心相近字。这是拼写检查查不出的错误,要尤为小心。
  3) 避免明显的语法错误。
  4) 请友人帮忙看一下,这是非常有效的一个方法。一是从拼写、语法、句式等方面来看,
  有无错误;二是从构思的角度上来看,有没有更合适、更恰当的表达。
  5) Objective写不写?其实写和不写各有利弊。如果写上,当然显得目标明确,非这个行业、
  这个部门不可,但同时也就限制了你在别的行业求职的可能性。但如果你什么都不写,
  雇主参照你的背景和一些测试的结果也许认为你更适合别的部门,这样就可能获得新的机会。
  通常美式简历的规范写法都是不写Objective的。
  7、 纸与字体
  1) 规格,至少80克,或100克左右。在北京许多打字社、复印铺都用60、70克的纸,
  这类纸往往显得轻飘飘的,质感很差。
  2) 尺寸,A4,即29.7厘米长,21厘米宽。
  3) 字体,建议用Times New Roman。
  4) 字号,一般最好用10号,即小五。不过,在学生简历中也可用12号字,即小四。
  5) 打印一定要用激光打印。
  6) 间距,上下一样,约2-3厘米;左右一样,约1.2-2.5厘米;
  最左边的bullet point到左页边的距离保持在3.8-5厘米。 (请看英文简历范本)
  英文简历样本1(适合毕业生)-
  Room XXX Building XXX
  Beijing University, Beijing 100084
  (010) 6277XXXX
  Zeng Yun
  --------------------------------------------------------------------------------
  Objective
  To obtain a challenging position as software engineer with an emphasis in software design and development
  --------------------------------------------------------------------------------
  Education
  0.6 Dept. Automation, Graduate School of Beijing University, M.E.
  7.7 Dept. Automation, Beijing University, B.E.
  Academic Main Courses
  Mathematics:
  Advanced Mathematics Probability and Statistics Linear Algebra
  Engineering Mathematics Numerical Algorithm Operational Algorithm
  Electronics and Computer
  Circuit Principal Data Structures Digital Electronics
  Artificial Intelligence Computer Local Area Network
  Computer Abilities
  Skilled in use of MS FrontPage, Win 95/NT, Sun, Javabeans, HTML, CGI,
  java script, Perl, Distributed Objects, CORBA, C, C++, Project 98, Office 97,
  Rational RequisitePro, Process, Pascal, PL/I and SQL software.
  English Skills
  Have a good command of both spoken and written English. Past CET-6, TOEFL: 650;GRE: 2300
  Scholarships and Awards
  1999.3 Jia Chen Award, the top honor given by Beijing University
  1998.11 Metal Machining Practice Award
  1997.4 Academic Progress Award
  Qualifications
  General business knowledge relating to financial
  Have a passion for the Internet, and an abundance of common sense
  英文简历样本2 (适合有工作经验者)
  RESUME
  Personal Information
  Family name: Zeng Given Name: Yun
  Date of Birth: July 12, 1971 Birth Place: Beijing
  Sex: Male Marital Status: Unmarried
  Telephone: (010)6277XXXX Pager: 7
  E-mail: bjrc@bjrc
  Work Experience:
  Nov. 1998- presents CCIDE Inc, as a director of software development and
  web publishing. Organized and attended trade shows (Comdex 99).
  Summer of 1997 IBM Company as a technician, designed various web sites.
  Designed and maintained the web site of our division independently from selecting
  suitable materials, content editing to designing web page by FrontPage, PhotoShop and Java as well.
  Education:
  1991 – August 1996 Dept. Automation, Beijing University, B.E.
  Achievements & Activities:
  President and Founder of the Costumed Committee
  Established the organization as a member of IBM
  President of Communications for the Marketing Association
  Representative in the Student Association
  Computer Abilities:
  Skilled in use of MS FrontPage, Win 95/NT, Sun, Javabeans, HTML, CGI,
  java script, Perl, Distributed Objects, CORBA, C, C++, Project 98, Office 97,
  Rational RequisitePro, Process, Pascal, PL/I and SQL software
  English Skills:
  Have a good command of both spoken and written English. Past CET-6, TOEFL: 650;GRE: 2300
  Others:
  Aggressive, independent and be able to work under a dynamic environment.
  Studious nature and dedication are my greatest strengths. Have coordination skills, teamwork spirit.    要想了解更多,请照参考资料.
请登录后再发表评论!如何利用javascript的正则表达式替换手机号码,显示的结果只显示手机号码的后四位数字_百度知道
如何利用javascript的正则表达式替换手机号码,显示的结果只显示手机号码的后四位数字
结果显示为:(手机尾号为:*******1234)本人自学javascript中,望各位能指点一二,感激不尽~~~
能带注释更好!
我有更好的答案
参数二中可以使用$n(n为数字)来依次引用模式串中用括号定义的字串.replace(/(\d{3})\d{4}(\d{4})/,同时也用于定义子模式串,在replace()方法中, '*******$1'), '$1****$2');此段正则匹配字符串中的连续11位数字,替换中间4位为*号,输出常见的隐匿手机号的格式。如果要仅得到末尾4位,则可以改成如下形式:// 匹配连续11位数字,并替换其中的前7位为*号''.replace(/\d{7}(\d{4})/:正则表达式中的括号即可用于分组;补充注释// 匹配手机号首尾,以类似“123****8901”的形式输出''
采纳率:63%
来自团队:
为您推荐:
其他类似问题
正则表达式的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Java 正则表达式
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
正则表达式实例
一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。
.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。
下表列出了一些正则表达式的实例及描述:
正则表达式
this is text
匹配字符串 "this is text"
this\s+is\s+text
注意字符串中的 \s+。
匹配单词 "this" 后面的 \s+ 可以匹配多个空格,之后匹配 is 字符串,再之后 \s+ 匹配多个空格然后再跟上 text 字符串。
可以匹配这个实例:this is text
^\d+(\.\d+)?
^ 定义了以什么开始
\d+ 匹配一个或多个数字
? 设置括号内的选项是可选的
\. 匹配 "."
可以匹配的实例:"5", "1.5" 和 "2.21"。
Java 正则表达式和 Perl 的是最为相似的。
java.util.regex 包主要包括以下三个类:
Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException:PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
以下实例中使用了正则表达式 .*runoob.* 用于查找字符串中是否包了 runoob 子串:
import java.util.regex.*;
class RegexExample1{
public static void main(String args[]){
String content = &I am noob & +
&from runoob.com.&;
String pattern = &.*runoob.*&;
boolean isMatch = Pattern.matches(pattern, content);
System.out.println(&字符串中是否包含了 'runoob' 子字符串? & + isMatch);
实例输出结果为:
字符串中是否包含了 'runoob' 子字符串? true
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
例如,正则表达式 (dog) 创建了单一分组,组里包含"d","o",和"g"。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:
((A)(B(C)))
可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。
下面的例子说明如何从一个给定的字符串中找到数字串:
RegexMatches.java 文件代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
public static void main( String args[] ){
String line = &This order was placed for QT3000! OK?&;
String pattern = &(\\D*)(\\d+)(.*)&;
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println(&Found value: & + m.group(0) );
System.out.println(&Found value: & + m.group(1) );
System.out.println(&Found value: & + m.group(2) );
System.out.println(&Found value: & + m.group(3) );
System.out.println(&NO MATCH&);
以上实例编译运行结果如下:
Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000
Found value: ! OK?
正则表达式语法
在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
所以,在其他的语言中,一个反斜杠\就足以具有转义的作用,而在正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在正则表达式中,两个 \ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\\\。
将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,"n"匹配字符"n"。"\n"匹配换行符。序列"\\\\"匹配"\\","\\("匹配"("。^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n"或"\r"之后的位置匹配。$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n"或"\r"之前的位置匹配。*零次或多次匹配前面的字符或子表达式。例如,zo* 匹配"z"和"zoo"。* 等效于 {0,}。+一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。?零次或一次匹配前面的字符或子表达式。例如,"do(es)?"匹配"do"或"does"中的"do"。? 等效于 {0,1}。{n}n 是非负整数。正好匹配 n 次。例如,"o{2}"与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。{n,}n 是非负整数。至少匹配 n 次。例如,"o{2,}"不匹配"Bob"中的"o",而匹配"foooood"中的所有 o。"o{1,}"等效于"o+"。"o{0,}"等效于"o*"。{n,m}M 和 n 是非负整数,其中 n &= m。匹配至少 n 次,至多 m 次。例如,"o{1,3}"匹配"fooooood"中的头三个 o。'o{0,1}' 等效于 'o?'。注意:您不能将空格插入逗号和数字之间。?当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是"非贪心的"。"非贪心的"模式匹配搜索到的、尽可能短的字符串,而默认的"贪心的"模式匹配搜索到的、尽可能长的字符串。例如,在字符串"oooo"中,"o+?"只匹配单个"o",而"o+"匹配所有"o"。.匹配除"\r\n"之外的任何单个字符。若要匹配包括"\r\n"在内的任意字符,请使用诸如"[\s\S]"之类的模式。(pattern)匹配 pattern 并捕获该匹配的子表达式。可以使用 $0…$9 属性从结果"匹配"集合中检索捕获的匹配。若要匹配括号字符 ( ),请使用"\("或者"\)"。(?:pattern)匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用"or"字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。(?=pattern)执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配"Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。(?!pattern)执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配"Windows 3.1"中的 "Windows",但不匹配"Windows 2000"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。x|y匹配 x 或 y。例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。[xyz]字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。[^xyz]反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。[a-z]字符范围。匹配指定范围内的任何字符。例如,"[a-z]"匹配"a"到"z"范围内的任何小写字母。[^a-z]反向范围字符。匹配不在指定的范围内的任何字符。例如,"[^a-z]"匹配任何不在"a"到"z"范围内的任何字符。\b匹配一个字边界,即字与空格间的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"。\B非字边界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。\cx匹配 x 指示的控制字符。例如,\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是"c"字符本身。\d数字字符匹配。等效于 [0-9]。\D非数字字符匹配。等效于 [^0-9]。\f换页符匹配。等效于 \x0c 和 \cL。\n换行符匹配。等效于 \x0a 和 \cJ。\r匹配一个回车符。等效于 \x0d 和 \cM。\s匹配任何空白字符,包括空格、制表符、换页符等。与 [&\f\n\r\t\v] 等效。\S匹配任何非空白字符。与 [^&\f\n\r\t\v] 等效。\t制表符匹配。与 \x09 和 \cI 等效。\v垂直制表符匹配。与 \x0b 和 \cK 等效。\w匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。\W与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效。\xn匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如,"\x41"匹配"A"。"\x041"与"\x04"&"1"等效。允许在正则表达式中使用 ASCII 代码。\num匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。例如,"(.)\1"匹配两个连续的相同字符。\n标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式,那么 n 是反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码。\nm标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获,则 n 是反向引用,后面跟有字符 m。如果两种前面的情况都不存在,则 \nm 匹配八进制值 nm,其中 n 和 m 是八进制数字 (0-7)。\nml当 n 是八进制数 (0-3),m 和 l 是八进制数 (0-7) 时,匹配八进制转义码 nml。\un匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,\u00A9 匹配版权符号 ((C))。
根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。例如,当解释为正则表达式时,字符串字面值 "\b" 与单个退格字符匹配,而 "\\b" 与单词边界匹配。字符串字面值 "\(hello\)" 是非法的,将导致编译时错误;要与字符串 (hello) 匹配,必须使用字符串字面值 "\\(hello\\)"。
Matcher 类的方法
索引方法提供了有用的索引值,精确表明输入字符串中在哪能找到匹配:
方法及说明
public int start()
返回以前匹配的初始索引。
public int start(int group)
&返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引
public int end()
返回最后匹配字符之后的偏移量。
public int end(int group)
返回在以前的匹配操作期间,由给定组所捕获子序列的最后字符之后的偏移量。
研究方法用来检查输入字符串并返回一个布尔值,表示是否找到该模式:
方法及说明
public boolean lookingAt()
&尝试将从区域开头开始的输入序列与该模式匹配。
public boolean find()
尝试查找与该模式匹配的输入序列的下一个子序列。
public boolean find(int start)
重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
public boolean matches()
尝试将整个区域与模式匹配。
替换方法是替换输入字符串里文本的方法:
方法及说明
public Matcher appendReplacement(StringBuffer sb, String replacement)
实现非终端添加和替换步骤。
public StringBuffer appendTail(StringBuffer sb)
实现终端添加和替换步骤。
public String replaceAll(String replacement)
&替换模式与给定替换字符串相匹配的输入序列的每个子序列。
public String replaceFirst(String replacement)
&替换模式与给定替换字符串匹配的输入序列的第一个子序列。
public static String quoteReplacement(String s)
返回指定字符串的字面替换字符串。这个方法返回一个字符串,就像传递给Matcher类的appendReplacement 方法一个字面字符串一样工作。
start 和 end 方法
下面是一个对单词 "cat" 出现在输入字符串中出现次数进行计数的例子:
RegexMatches.java 文件代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
private static final String REGEX = &\\bcat\\b&;
private static final String INPUT =
&cat cat cat cattie cat&;
public static void main( String args[] ){
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
int count = 0;
while(m.find()) {
System.out.println(&Match number &+count);
System.out.println(&start(): &+m.start());
System.out.println(&end(): &+m.end());
以上实例编译运行结果如下:
Match number 1
start(): 0
Match number 2
start(): 4
Match number 3
start(): 8
Match number 4
start(): 19
可以看到这个例子是使用单词边界,以确保字母 "c" "a" "t" 并非仅是一个较长的词的子串。它也提供了一些关于输入字符串中匹配发生位置的有用信息。
Start 方法返回在以前的匹配操作期间,由给定组所捕获的子序列的初始索引,end 方法最后一个匹配字符的索引加 1。
matches 和 lookingAt 方法
matches 和 lookingAt 方法都用来尝试匹配一个输入序列模式。它们的不同是 matches 要求整个序列都匹配,而lookingAt 不要求。
lookingAt 方法虽然不需要整句都匹配,但是需要从第一个字符开始匹配。
这两个方法经常在输入字符串的开始使用。
我们通过下面这个例子,来解释这个功能:
RegexMatches.java 文件代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
private static final String REGEX = &foo&;
private static final String INPUT = &fooooooooooooooooo&;
private static final String INPUT2 = &ooooofoooooooooooo&;
private static Pattern pattern;
private static Matcher matcher;
private static Matcher matcher2;
public static void main( String args[] ){
pattern = Pattern.compile(REGEX);
matcher = pattern.matcher(INPUT);
matcher2 = pattern.matcher(INPUT2);
System.out.println(&Current REGEX is: &+REGEX);
System.out.println(&Current INPUT is: &+INPUT);
System.out.println(&Current INPUT2 is: &+INPUT2);
System.out.println(&lookingAt(): &+matcher.lookingAt());
System.out.println(&matches(): &+matcher.matches());
System.out.println(&lookingAt(): &+matcher2.lookingAt());
以上实例编译运行结果如下:
Current REGEX is: foo
Current INPUT is: fooooooooooooooooo
Current INPUT2 is: ooooofoooooooooooo
lookingAt(): true
matches(): false
lookingAt(): false
replaceFirst 和 replaceAll 方法
replaceFirst 和 replaceAll 方法用来替换匹配正则表达式的文本。不同的是,replaceFirst 替换首次匹配,replaceAll 替换所有匹配。
下面的例子来解释这个功能:
RegexMatches.java 文件代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
private static String REGEX = &dog&;
private static String INPUT = &The dog says meow. & +
&All dogs say meow.&;
private static String REPLACE = &cat&;
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
INPUT = m.replaceAll(REPLACE);
System.out.println(INPUT);
以上实例编译运行结果如下:
The cat says meow. All cats say meow.
appendReplacement 和 appendTail 方法
Matcher 类也提供了appendReplacement 和 appendTail 方法用于文本替换:
看下面的例子来解释这个功能:
RegexMatches.java 文件代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
private static String REGEX = &a*b&;
private static String INPUT = &aabfooaabfooabfoob&;
private static String REPLACE = &-&;
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT);
StringBuffer sb = new StringBuffer();
while(m.find()){
m.appendReplacement(sb,REPLACE);
m.appendTail(sb);
System.out.println(sb.toString());
以上实例编译运行结果如下:
-foo-foo-foo-
PatternSyntaxException 类的方法
PatternSyntaxException 是一个非强制异常类,它指示一个正则表达式模式中的语法错误。
PatternSyntaxException 类提供了下面的方法来帮助我们查看发生了什么错误。
方法及说明
public String getDescription()
获取错误的描述。
public int getIndex()
&获取错误的索引。
public String getPattern()
获取错误的正则表达式模式。
public String getMessage()
返回多行字符串,包含语法错误及其索引的描述、错误的正则表达式模式和模式中错误索引的可视化指示。
3个月前 (11-21)
appendTail 方法:sb 是一个 StringBuffer,这个方法是把最后一次匹配到内容之后的字符串追加到 StringBuffer 中。
两个方法一起使用就可以达到所有替换或者替换第一个:
所有替换:
while(m.find()){
m.appendReplacement(sb,replaceContext);
.appendTail(sb);
替换第一个:
if (matcher.find()){
matcher.appendReplacement(sb, replaceContext);
matcher.appendTail(sb);
&&&jinling&&103*** 1个月前 (01-07)
记住登录状态
重复输入密码

我要回帖

更多关于 arrays.fill方法详解 的文章

 

随机推荐