栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

大数据方向学习系列——Java基础——常用实用类(String类、正则)

大数据方向学习系列——Java基础——常用实用类(String类、正则)

文章目录

1、String类

1.1 构造String对象1.2 String类的常用方法1.3 String与基本数据类型的相互转化

1.3.1 String -> int1.3.2 数字转化为字符串 1.4 字符序列与字符、字节数组

1.4.1 字符序列与字符数组 2.正则表达式

2.1正则表达式与元字符2.2常用的正则表达式

2.2.1 匹配形如数字的正则表达式2.2.2 匹配如email正则2.2.3 匹配身份证号码2.2.4 匹配日期的正则表达式 2.3 字符序列的替换与分解 3. StringTokenizer类4.Scanner类5.Pattern与Match类6.StringBuffer类

6.1 StringBuffer对象的创建6.2 StringBuffer常用方法 7. 日期与时间


1、String类

java.lang包种的String类是final类,用户不能扩展String类,即String类不可以有子类

1.1 构造String对象

用String类的构造方法创建String对象

String s = new String("Hello world!");

也可以用字符数组创建String类的对象

char a = ['b','o','y'];
String s = new String(a);

String的构造方法是:String(char a[], int startIndex, int count) 提取字符数组a中的一部分创建一个String对象。

1.2 String类的常用方法
    int length() 求字符串长度boolean equals(String s)比较当前String对象的字符序列是否与参数s指定的String对象的字符序列相同

面试题: “equal"和”=="一样吗?
答: equal比较的是字符串序列的值是否相等,而==比较的是两个变量的引用是否相等。

    boolean startsWith(String s) 判断字符串前缀是否是s指定的参数int compareTo(String s) 比较两个字符串的大小 s大的话返回1相等0小于-1int compareTOIgnoreCase(String s)比较两个字符串大小,忽略大小写boolean contains(String s)判断当前String对象的字符序列是否含有s的字符序列,有返回trueint indexOf(String s,int startpoint) 返回字符第startpoint出现时的下标String substring(int start,int end) 截取字符串,前闭后开String trim() 返回去掉前后空格的字符串
1.3 String与基本数据类型的相互转化 1.3.1 String -> int
int x;
String s ="1234";
x = Integer.parseInt(s);

如果参数含有非数字或者超出int范围会报异常:NumberFormatException

有时候我们会把“12,123,334¥”转化为数字

String currency = "12,123,334¥";
String str = "###,###¥";
DecimalFormat df = new DecimalFormat(str);
Number num = df.parse(currency);
double d = num.doublevalue();
1.3.2 数字转化为字符串
String str = 3.14+"";
String str = String.valueOf(12313,98132);
1.4 字符序列与字符、字节数组 1.4.1 字符序列与字符数组

将当前String对象的字符序列中的一部分字符复制到参数c指定的数组当中,将String对象的字符序列中从索引位置start到end-1
位置上的字符复制到数组c中,并从数组c的offset开始存放这些字符。

public void getChars[int start, int end, char c[], int offset];

样例:

public static void main(String[] args) throws ParseException {
        char[] str = new char[10];
        String str2 = "helloworld";
        str2.getChars(0,str2.length(),str,0);
        System.out.println(str);
    }

输出:helloworld

String对象调用下面方法,将它的字符序列一次存放在一个字符数组的单元中,返回该数组的引用

public char[] toCharArray()
public static void main(String[] args) throws ParseException {
        char[] a;
        a= "大家好!我是小王!".toCharArray();
        System.out.println(a);
    }

输出:大家好!我是小王!

2.正则表达式 2.1正则表达式与元字符

String对象调用

public boolean matches(String regex)

方法可以判断当前字符序列是否和参数regex指定的正则表达式相匹配

下表表示了常用元字符及其意义

写法意义
.代表任意一个字符
d代表0-9任何一个数字
D代表任何一个非数字字符
s代表空格类字符
s代表非空格类字符
w代表可用于标识符的字符(不包括美元符号)
W代表不能用于标识符的字符
p{Lower}小写字母[a~z]
p{Upper}大写字母[A~Z]
p{ASCII}ASCLL字符
p{Alpha}字母

在正则表达式中可以用中括号括起若干个字符来表示一个元字符,该元字符代表中括号中的任何一个字符。例如String regex="[159]ABC"那么‘1ABC’,5ABC,'9ABC’都和regex相匹配。中括号元字符的意义如下:

[a,b,c]:代表abc中的任何一个[^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中的任何一个

在正则表达式中可以使用限定修饰符。例如,对于限定修饰符“?”,如果X代表正则表达式中的一个元字符或普通字符,那么“X?”就代表X出现0次或者1次,例如:

String regex = "hello[246]?";

表示:‘hello’、‘hello2’、hello4、hello6都与regex匹配。

下表给出常用的限定修饰符的用法

带限定符号的模式意义
X?X出现0次或者1次
X*X出现0次或者多次
X+X出现1次或者多次
X{n}X出现恰好n次
X{n,}X至少出现n次
X{n,m}X出现n~m次
XYX的后缀是Y
XY
2.2常用的正则表达式 2.2.1 匹配形如数字的正则表达式

给出匹配形如整数和浮点数的正则表达式。

String regex = "-?[1-9]\d+"

任何形如整数的字符序列都与regex相匹配,例如“123123”和“-98”

String regex = "-?[0-9][0-9]*[.][0-9]+";

任何浮点数的字符序列都与regex相匹配。

2.2.2 匹配如email正则
String regex = "\w+@\w+\.[a-z]+(\.[a-z]+)?"
2.2.3 匹配身份证号码
String regex = "[1-9][0-9]{16}[a-zA-Z0-9]{1}";
2.2.4 匹配日期的正则表达式
String year = "[1-9][0-9]{3}";
String month = "((0?[1-9])|(1[012]))";
String day = "((0?[1-9])|([12][0-9])|(3[01]?))";
String regex = year + "[-./]" + month + "[-./]" + day;
2.3 字符序列的替换与分解
public String replaceAll(String regex, String replacement);

返回一个新的String对象,返回的String对象的字符序列是把当前String对象的字符序列中,所有和参数regex相匹配的字符序列替换成参数replacement指定的字符序列所得到的字符序列,例如:

String s = "12hello763";
String res = s.replaceAll("\d+","你好");

输出:你好hello你好

String类中还提供了一个实用的方法:

public String[] split(String regex)

使用正则表达式作为分隔标记,分解出String对象的字符序列中的单词,并将分解出的单词存放到String数组中。例如:

String s = "在2022年3月4号我写下这篇博客";
        String digitWord[] = s.split("\D+");
        for (int i = 0; i < digitWord.length; i++) {
            System.out.println(digitWord[i]);
        }

输出:2022、3、4

3. StringTokenizer类 4.Scanner类 5.Pattern与Match类 6.StringBuffer类 6.1 StringBuffer对象的创建

由于String类是final类,String对象不能修改删除替换字符串序列中的某个字符,String对象一旦创建,实体就不可以再发生变化,这样的对象是 不可变对象

StringBuffer buffer = new StringBuffer();

但是StringBuffer类可以创建修改字符序列,也就是说该对象实体的内存空间可以自动的改变,下面列举它的3个构造方法:

StringBuffer()StringBuffer(int size)StringBuffer(String s)

第一个无参数的构造方法创建一个StringBuffer对象,初始分配16个字符的内存,超出再自动增加,通过length()方法可以获取字符序列长度,通过capacity()方法可以得到该实体的实际容量。
第二个构造方法可以指定初始容量为size的字符个数,超出再自动增加
第三个构造方法可以分配初始容量=String s字符序列长度+16个字符,超出再自动增加

6.2 StringBuffer常用方法
    StringBuffer append()追加字符char charAt(int n) 获取n位置的字符void setCharAt(int n,char ch) 替换n位置的字符StringBuffer insert(int index,String str) 将字符串插入到index位置上,返回当前对象的引用StringBuffer reverse() 反转字符串StringBuffer delete(int startindex,int endindex) 删除字符串从startindex到endindex-1StringBuffer replace (int startindex,int endindex,String str) 将 startindex到endindex-1的字符串替换为str
7. 日期与时间
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号