300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java学习笔记:常用字符串方法和正则表达式

Java学习笔记:常用字符串方法和正则表达式

时间:2019-04-17 18:43:21

相关推荐

Java学习笔记:常用字符串方法和正则表达式

String类

-字符串并置

public class Main {public static void main(String[] args) {String a = "1";String b = "2";String c = "1" + "2";String d = a + b;System.out.println(c == "12");System.out.println(d == "12");}}

上面输出c和的结果为12,但是:

c == “12” 输出true

d == “12” 输出flase

因为:d = a+b中的a,b是变量,而“1”,“2”是常量,是放置在常量池里的。

startsWith方法和endWith方法

判断是否以…为开头和结尾

public class Main {public static void main(String[] args) {String a = "123sff3442";String b = "2";String c = "123";System.out.println(a.startsWith("1"));System.out.println(a.endsWith("42"));}}

比较大小

public class Main {public static void main(String[] args) {String a = "asd";String b = "abc";String c = "nas";System.out.println(pareTo(b));System.out.println(pareTo(c));System.out.println(pareTo("asd"));}}/**17-130Process finished with exit code 0*/

排大小

import java.util.Arrays;int[] aa = {2, 6, 8, 3, 0, 88, 43, 1};Arrays.sort(aa);int i = 0;for (i = 0;i<aa.length;i++)System.out.print(aa[i] + " ");/*0 1 2 3 6 8 43 88 Process finished with exit code 0*/

indexOf(),查找第一个字符/字符串在第几个位置,(从0算起)lastIndexOf():查找最后一个字符/字符串在…boolean contains(String s):判断是否包含substring(int sta,int end):截出某一段pubilc String trim()

String对象调用方法trim()得到一个新的 String对象,这个新的 String对象的字符序列是当前 String对象的字符序列去掉前后空格后的字符序列。输出当前时间,可以用Date类+toString

import java.util.Date;public class Main {public static void main(String args[]) {Date date = new Date();System.out.println(date.toString());}}

getChars

下面是从s的下标2到6截出串,放到从c的下标0开始后面开始存放。需要注意的是,必须保证数组c能容纳下要被复制的字符。

public class Main {public static void main(String[] args) {String s = "1234556";char[] c = new char[4];s.getChars(2, 6, c, 0);System.out.println(c);}}/*3455Process finished with exit code 0*/

simpleDateFormat方法,格式化时间,里面的parse可以转化为至今的毫秒数。parse要记得使用try-catch,否则运行时异常。

package EXP.exp7;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Scanner;/*** @author JMChen* @date /4/22 8:29*/public class hw {private static long parseTime(String strTime) {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");long time = 0L;try {time = format.parse(strTime).getTime();} catch (ParseException e) {e.printStackTrace();}return time;}public static void main(String args[]) {System.out.println("请输入存款起始时间:(按xxxx-xx-xx格式输入)");Scanner sc = new Scanner(System.in);String s = sc.nextLine();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");long t = parseTime(s);System.out.println(t);}}

正则表达式

String对象调用public boolean matches(String regex)方法可以判断当前String对象的字符

序列是否和参数regex指定的正则表达式匹配。[abc]:代表a、b、c中的任何一个;

[^abc]:代表除了 a, b、c以外的任何字符;

[a-zA-Z]:代表英文字母(包括大写和小写)中的任何一个;

[a-d]:代表a~d中的任何一个。

另外,中括号里允许嵌套中括号,可以进行并、交、差运算,例如:

[a-d[m-p]]:代表a〜d,或m~p中的任何字符(并);

[a-z&&[def]]:代表d、e或f中的任何一个(交);

[a-f&&[^bc]]:代表 a、d、e、f (差)。

eg:匹配由数字或字母或下划线组成的字符串

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String regex = "[a-zA-Z|0-9|_]+";String str = sc.nextLine();if (str.matches(regex)) {System.out.println("yes");} else System.out.println("no");}}/*wqey823ed873e87IG2yes1 2eno*/

replaceAll(str1,replstr)

注:String对象调用replaceAll()方法返回一个新的String对象,但不改变当前String时象的字符序列。注意

举例1:表达式 “^aaa” 在匹配 “xxx aaa xxx” 时,匹配结果是:失败。因为 “^” 要求与字符串开始的地方匹配,因此,只有当 “aaa” 位于字符串的开头的时候,"^aaa" 才能匹配,比如:“aaa xxx xxx”。

举例2:表达式 “aaa ” 在 匹 配 " x x x a a a x x x " 时 , 匹 配 结 果 是 : 失 败 。 因 为 " ”在匹配"xxxaaaxxx"时,匹配结果是:失败。因为" ”在匹配"xxxaaaxxx"时,匹配结果是:失败。因为"” 要求与字符串结束的地方匹配,因此,只有当 “aaa” 位于字符串的结尾的时候,“aaa$” 才能匹配,比如:“xxx xxx aaa”。

举例3:表达式 “.\b.” 在匹配 “@@@abc” 时,匹配结果是:成功;匹配到的内容是:"@a";匹配到的位置是:开始于2,结束于4。

表达式 “\bend\b” 在匹配 “weekend,endfor,end” 时,匹配结果是:成功;匹配到的内容是:“end”;匹配到的位置是:开始于15,结束于18。

举例4:表达式 “(go\s*)+” 在匹配 “Let’s go go go!” 时,匹配结果是:成功;匹配到内容是:“go go go”;匹配到的位置是:开始于6,结束于14。

举例5:表达式 “¥(\d+.?\d*)” 在匹配 “$10.9,¥20.5” 时,匹配的结果是:成功;匹配到的内容是:“¥20.5”;匹配到的位置是:开始于6,结束于10。单独获取括号范围匹配到的内容是:“20.5”。

进一步说明:"\b" 与 “^” 和 “$” 类似,本身不匹配任何字符,但是它要求它在匹配结果中所处位置的左右两边,其中一边是 “\w” 范围,另一边是 非"\w" 的范围。匹配次数中的贪婪与非贪婪

在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}", “{m,}”, “?”, “*”, “+”,具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本 “dxxxdxxxd”

由此可见,"\w+" 在匹配的时候,总是尽可能多的匹配符合它规则的字符。

带 “*” 和 “{m,n}” 的表达式都是尽可能地多匹配,带 “?” 的表达式在可匹配可不匹配的时候,也是尽可能的 “要匹配”。这 种匹配原则就叫作 “贪婪” 模式 。

非贪婪模式:

在修饰匹配次数的特殊符号后再加上一个 “?” 号,则可以使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的 “不匹配”。这种匹配原则叫作 “非贪婪” 模式,也叫作 “勉强” 模式。如果少匹配就会导致整个表达式匹配失败的时候,与贪婪模式类似,非贪婪模式会最小限度的再匹配一些,以使整个表达式匹配成功。举例如下,针对文本 “dxxxdxxxd”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。