笔记五:课程实验中遇到的问题与解决(2)

一、Java中关于字符串的一些操作总结

在实验三中遇到了很多有关字符串的操作,其中有的操作需要用到正则表达式,有的不需要,总结如下

正则表达式相关

1. 判断字符串是否为纯数字

// 方法一:利用正则表达式

String str="123456";
boolean result=str.matches("[0-9]+");
if (result == true) {
	System.out.println("该字符串是纯数字");
}else{
	System.out.println("该字符串不是纯数字");
}

// 方法二:利用Pattern.

String str="123456";
Pattern pattern = Pattern.compile("[0-9]{1,}");
Matcher matcher = pattern.matcher((CharSequence)str);
boolean result=matcher.matches();
if (result == true) {
	System.out.println("该字符串是纯数字");
}else{
	System.out.println("该字符串不是纯数字");
}

2. 一段字符串中得到大括号内的字符

// 方法一:

String text="ZhangSan{Manger,139-0451-0000}LiSi{Secretary,151-0101-0000}WangWu{Associate Dean,177-2021-0301}";
Pattern p = Pattern.compile("\\{[^\\{\\}]{1,}\\}");
Matcher m = p.matcher(str);
while(m.find()){
	System.out.println(m.group());
}

// 方法二:

String text = "ZhangSan{Manger,139-0451-0000}LiSi{Secretary,151-0101-0000}WangWu{Associate Dean,177-2021-0301}";
Pattern p = Pattern.compile(".+?(\\{.+?\\})");
Matcher m = p.matcher(text);
while(m.find()) {
	System.out.println(m.group(1));
}

3. 匹配两个字符串中间的内容

// “ . ”表示任意字符,“ ? ”表示匹配一次或多次,“ ?<=A ” 表示以A开头,“ ?=B ”表示以B结尾
// 表达式: (?<=A).*?(?=B) 匹配两个字符串A与B之间的内容,不包含A和B	
// 匹配规则
String reg = "(?<=A).*?(?=B)";
String temp = "aAabcBc";
Pattern pattern = Pattern.compile(reg);
Matchermatcher = pattern.matcher(temp);
if( matcher.find() ){
	System.out.println(matcher.group());
}
//打印内容 abc

// 表达式: A.*?(?=B) 匹配两个字符串A与B之间的内容,包含B,不包含A

// 匹配规则
String reg = "A.*?(?=B)";
String temp = "aAabcBc";
Pattern pattern = Pattern.compile(reg);
Matchermatcher = pattern.matcher(temp);
if( matcher.find() ){
	System.out.println(matcher.group());
}

// 表达式: A.*?B 匹配两个字符串A与B之间的内容,包含A和B
// 匹配规则
String reg = "A.*?B";
String temp = "aAabcBc";
Pattern pattern = Pattern.compile(reg);
Matchermatcher = pattern.matcher(temp);
if( matcher.find() ){
	System.out.println(matcher.group());
}
//打印内容 AabcB

4. 从字符串中删除unicode字符

在做实验的时候要删除从文件读入字符串中的缩进,打印该缩进后发现不是\t,而是unicode码为65533的神奇字符,查阅资料后总结从字符串中删除unicode字符方法如下

String comment = "test string";
// remove all non-ASCII characters
comment = comment.replaceAll("[^\\x00-\\x7F]", "");
// remove all the ASCII control characters
comment = comment.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "");
// removes non-printable characters from Unicode
comment = comment.replaceAll("\\p{C}", "");
System.out.println(comment);

正则表达式无关

1. 将数组元素组合为一个字符串

String.join(", ", new String[]{"Hello", "World", "!"});
// 结果:Hello, World, !

StringUtils.join(new String[]{"Hello", "World", "!"}, ", ");
// 结果:Hello, World, !

2. 去掉字符串第一个字符和最后一个字符

String str = "HelloWorld!"
str.substring(1,str.length()-1));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值