7.Java字符串与正则化表达式

字符

转义字符

直接放代码

public static void main(String[] args) {
        char tab = '\t';  //制表符转义字符\t
        System.out.println(tab);
        char enter = '\r';  //回车符转义字符\r
        System.out.println(enter);
        char line = '\n';  //换行符转义字符\n
        System.out.println(line);
        char singleQuote = '\'';  //单引号转义字符\'
        System.out.println(singleQuote);
        char doubleQuote = '\"';  //双引号转义字符\"
        System.out.println(doubleQuote);
        char fanxiegan = '\\';  //反斜杠的转义字符\\
        System.out.println(fanxiegan);
    }

字符串与整形的相互转换

之所以会出现这种字符串和整形相互转换的情况,是因为计算机存在编码的问题,早期编程只支持英语和其他西欧语言,汉字数量较多,ASCII编码不足,后来进行扩展成DBCS,才够将以东亚为主的象形文字纳入编程之内。

public class StringtoInt {
    public static void main(String[] args) {
        char tian = '田';
        char A = 'A';
        System.out.println(tian);
        System.out.println(A);
        //将字符串转换成整形
        int tian1 = '田';
        int A1 = 'A';
        System.out.println(tian1);
        System.out.println(A1);
        //当然也可以直接将数字转换成字符串
        char tian2 = 30000;
        char A2 = 65;
        System.out.println(tian2);
        System.out.println(A2);
    }

输出为;


A
30000
65

A

字符包装类型

字符型char也对应有Character包装字符型,初始化包装字符型变量也有三种方法:
(1)直接用等号赋值
(2)调用包装类型的valueOf方法
(3)使用关键字new创建新变量
下面代码是将字符包装变量转换成字符变量的例子

Character character = 'A'; // 声明一个包装字符变量
		System.out.println("character=" + character);
		char value = character.charValue(); // 把包装字符变量转换成基本字符变量
		System.out.println("value=" + value);
		// Character类型与char类型的变量之间允许直接赋值,靠的是“自动装箱”和“自动拆箱”
		Character plusResult = (char) (character + 1);
		System.out.println("plusResult=" + plusResult);

把包装字符变量转换成基本字符变量需要用到包装变量的CharValue方法

字符串额外的处理方法

isDigit:判断输入的字符是否为数字
isLetter:判断输入的字符是否为字母
islowerCase:判断输入的字符是否为小写字母
isUpperCase:判断输入的字符是否为大写字母
isSpaceChar:判断输入的字符是否为空格
isWhitespace:判断输入的字符是否为空白(非数字、字母、标点)
toLowerCase:判断输入的字符是否为小写,不是小写字母转换成小写
toUpperCase:判断输入的字符是否为大写,不是大写字母转换成大写

Character letter = 'A'; // 声明一个包装字符变量
		// 下面是Character常用的字符处理方法
		boolean isDigit = Character.isDigit(letter); // isDigit方法判断字符是否为数字
		System.out.println("isDigit=" + isDigit);
		boolean isLetter = Character.isLetter(letter); // isLetter方法判断字符是否为字母
		System.out.println("isLetter=" + isLetter);
		boolean isLowerCase = Character.isLowerCase(letter); // isLowerCase方法判断字符是否为小写
		System.out.println("isLowerCase=" + isLowerCase);
		boolean isUpperCase = Character.isUpperCase(letter); // isUpperCase方法判断字符是否为大写
		System.out.println("isUpperCase=" + isUpperCase);
		Character line = '\n'; // 声明一个包装字符变量
		boolean isSpaceChar = Character.isSpaceChar(line); // isSpaceChar方法判断字符是否为空格
		System.out.println("isSpaceChar=" + isSpaceChar);
		// isWhitespace方法判断字符是否为空白(非数字非字母非标点,包括空格、制表、回车、换行等)
		boolean isWhitespace = Character.isWhitespace(line);
		System.out.println("isWhitespace=" + isWhitespace);
		char lowerCase = Character.toLowerCase(letter); // toLowerCase方法把字符转换为大写
		System.out.println("lowerCase=" + lowerCase);
		char upperCase = Character.toUpperCase(letter); // toUpperCase方法把字符转换为小写
		System.out.println("upperCase=" + upperCase);

在这里插入图片描述

字符串

字符串的赋值与转换

字符串类型String有4种方式,如下:

String s = "直接赋值";
        System.out.println("s=" + s);
String s1 = String.valueOf("使用valueOf方法赋值");
        System.out.println("s=" + s1);
char[] array = {'n', 'e', 'w','赋','值'};
        String s2 = new String(array);
        System.out.println("s2=" + s2);
String s4 = true + "加号连接";
        System.out.println("s4=" + s4);

将字符串变量转换成包装整形变量、包装长整形变量、包装浮点型变量、包装双精度型变量、包装布尔型变量、字符数组

String number = "13456";
		Integer packInt = Integer.parseInt(number); // 将字符串变量转换成包装整型变量
		System.out.println("packInt=" + packInt);
		Long packLong = Long.parseLong(number); // 将字符串变量转换成包装长整型变量
		System.out.println("packLong=" + packLong);
		Float packFloat = Float.parseFloat(number); // 将字符串变量转换成包装浮点型变量
		System.out.println("packFloat=" + packFloat);
		Double packDouble = Double.parseDouble(number); // 将字符串变量转换成包装双精度型变量
		System.out.println("packDouble=" + packDouble);
		String zhen = "true";
		Boolean packBoolean = Boolean.parseBoolean(zhen); // 将字符串变量转换成包装布尔型变量
		System.out.println("packBoolean=" + packBoolean);
		char[] numberArray = number.toCharArray(); // 将字符串转换成字符数组
		for (char item : numberArray) { // 遍历并打印字符数组中的各元素
			System.out.println("item=" + item);
		}

字符串的格式化

利用format方法格式化单个变量值与多个变量值代码如下:

%s——字符串占位记号
%c——字符占位记号
%b——布尔值占位记号
%d——十进制整数占位记号
%o——八进制整数占位记号
%x——十六进制整数占位记号
%f——浮点数占位记号

// 往字符串填入另一个字符串
		String fromString = String.format("格式化子串的字符串:%s", "Hello");
		System.out.println("fromString=" + fromString);
		// 往字符串填入字符
		String fromChar = String.format("格式化字符的字符串:%c", 'A');
		System.out.println("fromChar=" + fromChar);
		// 往字符串填入布尔值
		String fromBoolean = String.format("格式化布尔值的字符串:%b", false);
		System.out.println("fromBoolean=" + fromBoolean);
		// 往字符串填入十进制整数
		String fromInt = String.format("格式化整型数的字符串:%d", 255);
		System.out.println("fromInt=" + fromInt);
		// 往字符串填入十六进制数
		String fromOct = String.format("格式化十六进制数的字符串:%o", 255);
		System.out.println("fromOct=" + fromOct);
		// 往字符串填入八进制数
		String fromHex = String.format("格式化八进制数的字符串:%x", 255);
		System.out.println("fromHex=" + fromHex);
		// 往字符串填入浮点数
		String fromFloat = String.format("格式化浮点数的字符串:%f", 3.14);
		System.out.println("fromFloat=" + fromFloat);
		// 格式化字符串的时候,同时填充多个变量
		String manyVariable = String.format(
				"以下字符串包括了多个变量值:%s,%c,%b,%d,%o,%x,%f", "Hello", 'A', false, 255,
				255, 255, 3.14);
		System.out.println("manyVariable=" + manyVariable);

		// 注意,双精度数若是通过%f格式化双精度数,则会强制转成浮点数
		String fromDouble = String.format("双精度数格式化后丢失精度的字符串:%f", 3.1415926);
		System.out.println("fromDouble=" + fromDouble);
		// 因此,格式化双精度数之时,需要指定小数点后面的保留位数
		String fromDecimal = String.format("格式化双精度数的字符串:%.8f", 3.1415926);
		System.out.println("fromDecimal=" + fromDecimal);
		// 对整数分配固定长度,该整数默认右对齐、左补空格
		String fromLenth = String.format("格式化固定长度(默认右对齐)的整数字符串:(%8d)", 255);
		System.out.println("fromLenth=" + fromLenth);
		// 对整数分配固定长度,且该整数左对齐、右补空格
		String fromLeft = String.format("格式化固定长度且左对齐的整数字符串:(%-8d)", 255);
		System.out.println("fromLeft=" + fromLeft);
		// 对整数分配固定长度,该整数默认右对齐、左补0
		String fromZero = String.format("格式化固定长度且左补0的整数字符串:(%08d)", 255);
		System.out.println("fromZero=" + fromZero);

		// 字符串格式化的时候,可能出现某个变量被多次填入的情况
		String fromRepeat1 = String.format("重要的事情说三遍:%s,%s,%s", "别迟到", "别迟到",
				"别迟到");
		System.out.println("fromRepeat1=" + fromRepeat1);
		// 重复填入某个变量值,可利用“%数字$”的形式,其中“数字$”表示这里取后面的第几个变量值
		String fromRepeat2 = String.format("重要的事情说三遍:%1$s,%1$s,%1$s", "别迟到");
		System.out.println("fromRepeat2=" + fromRepeat2);

		double normalDecimal = 19.895;
		// 保留双精度数的小数点后面两位
		String normalResult = formatWithDouble(normalDecimal, 2);
		System.out.println("normalResult=" + normalResult);
		BigDecimal bigDecimal = new BigDecimal("123456789012345678.901");
		// 保留大小数的小数点后面两位
		String bigResult = formatWithBigDecimal(bigDecimal, 2);
		System.out.println("bigResult=" + bigResult);

截取大数的例子

public static String formatWithBigDecimal(BigDecimal value, int digit) {
		// 大小数类型的setScale方法需要指定明确的舍入规则,其中HALF_UP表示四舍五入
		BigDecimal result = value.setScale(digit, RoundingMode.HALF_UP);
		return result.toString();

字符串的常见方法

判断字符串是否具有某种特征
		String hello = "Hello World. 你好世界。";
		boolean isEmpty = hello.isEmpty(); // isEmpty方法判断该字符串是否为空串
		System.out.println("是否为空 = " + isEmpty);
		boolean equals = hello.equals("你好"); // equals方法判断该字符串是否与目标串相等
		System.out.println("是否等于你好 = " + equals);
		boolean startsWith = hello.startsWith("Hello"); // startsWith方法判断该字符串是否以目标串开头
		System.out.println("是否以Hello开头 = " + startsWith);
		boolean endsWith = hello.endsWith("World"); // endsWith方法判断该字符串是否以目标串结尾
		System.out.println("是否以World结尾 = " + endsWith);
		boolean contains = hello.contains("or"); // contains方法判断该字符串是否包含了目标串
		System.out.println("是否包含or = " + contains);

是否为空 = false
是否等于你好 = false
是否以Hello开头 = true
是否以World结尾 = false
是否包含or = true

在字符串内部根据条件定位
		int char_length = hello.length(); // length方法返回该字符串的字符数
		System.out.println("字符数 = " + char_length);
		int byte_length = hello.getBytes().length; // getBytes方法返回该字符串对应的字节数组
		System.out.println("字节数 = " + byte_length);
		char first = hello.charAt(0); // charAt方法返回该字符串在指定位置的字符
		System.out.println("首字符 = " + first);
		int index = hello.indexOf("l"); // indexOf方法返回目标串在源串中第一次找到的位置
		System.out.println("首次找到l的位置 = " + index);
		int lastIndex = hello.lastIndexOf("l"); // lastIndexOf方法返回目标串在源串中最后一次找到的位置
		System.out.println("最后找到l的位置 = " + lastIndex);

字符数 = 18
字节数 = 28
首字符 = H
首次找到l的位置 = 2
最后找到l的位置 = 9

根据某种规则修改字符串内容
        String lowerCase = hello.toLowerCase(); // toLowerCase方法返回转换为小写字母的字符串
		System.out.println("转换为小写字母 = " + lowerCase);
		String upperCase = hello.toUpperCase(); // toUpperCase方法返回转换为大写字母的字符串
		System.out.println("转换为大写字母 = " + upperCase);
		String trim = hello.trim(); // trim方法返回去掉首尾空格后的字符串
		System.out.println("去掉首尾空格 = " + trim);
		String concat = hello.concat("Fine, thank you."); // concat方法返回在末尾添加目标串后的字符串
		System.out.println("追加了目标串 = " + concat);
		// 只有一个输入参数的substring方法,从指定位置一直截取到源串的末尾
		String subToEnd = hello.substring(6);
		System.out.println("从第六位截取到末尾 = " + subToEnd);
		// 有两个输入参数的substring方法,返回从开始位置到结束位置中间截取的子串
		String subToCustom = hello.substring(6, 9);
		System.out.println("从第六位截取到第九位 = " + subToCustom);
		String replace = hello.replace("l", "L"); // replace方法返回目标串替换后的字符串
		System.out.println("把l替换为L = " + replace);

转换为小写字母 = hello world. 你好世界。
转换为大写字母 = HELLO WORLD. 你好世界。
去掉首尾空格 = Hello World. 你好世界。
追加了目标串 = Hello World. 你好世界。Fine, thank you.
从第六位截取到末尾 = World. 你好世界。
从第六位截取到第九位 = Wor
把l替换为L = HeLLo WorLd. 你好世界。

正则化表达式

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值