Java中的String类下的正则表达式运用附带编程题解析
以下是我做牛客网题时,遇到的使用正则表达式可以简单化代码,所以我们需要掌握这两个知识点,方便解决以后遇到类似的问题。
1. public String replaceAll(String regex,String replacement)
使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串**。
replaceAll的参数是regex,即基于正则表达式的替换,比如,可以通过replaceAll("\d", "")把一个字符串所有的数字字符都换成 号
如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串;
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;2,publilc boolean matches(String regex):
matches() 方法用于检测字符串是否匹配给定的正则表达式。
```
Pattern.matches(regex, str)
public boolean matches(String regex)
参数:regex – 匹配字符串的正则表达式。//(.)...(.)或者【】
两种表达式产生的结果完全相同
``
public class Demo1 {
//代码示例
public static void main(String[] args){ String Str = new String("我是一只小小鸟"); System.out.println("返回值 :"+Str.matches("(.*)一只(.*)")); boolean flag = Str.matches("我是(.*)"); if(flag){ System.out.println("我被重新定义为:HelloWord!"); }else{ System.out.println("我没有被重新定义!"); } }
}
执行jie‘gu
返回值 :true
我被重新定义为:HelloWord!
********(编程题) 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上 移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取 一些坐标,并将最终输入结果输出到输出文件里面。 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。 下面是一个简单的例子 如: 10;S20;W10;D30;X;A1A;B10A11;;A10; 处理过程: 起点(0,0) + A10 = (-10,0) + S20 = (-10,-20) + W10 = (-10,-10) + D30 = (20,-10) + x = 无效 + A1A = 无效 + B10A11 = 无效 + 一个空 不影响 + A10 = (10,-10) 结果 (10, -10) 注意请处理多组输入输出** import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String str=sc.nextLine(); String[] A=str.split(";"); int x=0,y=0; for(String string:A){ if(string.charAt(0)==‘D‘ && string.substring(1).matches("[0-9]+")) // + 的意思是匹配一次或者多次,可以是9.99.999.。。。 x+=Integer.parseInt(string.substring(1)); if(string.charAt(0)==‘W‘ && string.substring(1).matches("[0-9]+")) y+=Integer.parseInt(string.substring(1)); if(string.charAt(0)==‘S‘ && string.substring(1).matches("[0-9]+")) y-=Integer.parseInt(string.substring(1)); if(string.charAt(0)==‘A‘ && string.substring(1).matches("[0-9]+")) x-=Integer.parseInt(string.substring(1)); } System.out.println(x+","+y); } sc.close(); } }
经常碰到的编程题: 删除公共字符 ****# > *输入两个字符串,从第一字符串中删除第二个字符串 # > 中所有的字符。例如,输入”They are students.”和”aeiou”, # > 则删除之后的第一个字符串变成”Thy r stdnts.”*** import java.util.Scanner; public class DeleteChar { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scanner.hasNext()){ String src=scanner.nextLine(); String dest=scanner.nextLine(); String patten="["+dest+"]";//正则表达式的规则形式 String result=src.replaceAll(patten,"");//src是不变的 //用空串去替代出现在src中的patten(以及patten的任意一个字串) System.out.println(result); } } }
相关推荐
flyingssky 2020-08-18
wangzhaotongalex 2020-10-20
wyq 2020-11-11
TLROJE 2020-10-26
风雨断肠人 2020-10-13
duanqingfeng 2020-09-29
rechanel 2020-11-16
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
phphub 2020-09-10
taomengxing 2020-09-07
MaggieRose 2020-08-19
山水沐光 2020-08-18
jyj00 2020-08-15
AHuqihua 2020-08-09
山水沐光 2020-08-03