java基础—3.String类与正则表达式
来源:互联网 发布:网络对讲系统 编辑:程序博客网 时间:2024/06/07 04:51
一、概述及理解
java.lang.String是处理字符串的类。字符串是java编程中经常处理的对象。
二、常见功能
常见功能有CRUD,即:
|--1.获取
1.1 获取字符串的长度 int length()1.2 返回指定索引处的 char 值char charAt(int index) 1.3 根据字符获取字符在字符串中的位置int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始1.4 获取字符串中的一部分String subString(begin , end) 包含头,但是不包含尾
|--2.判断
2.1 字符串中是否包含某一个子串boolean contains(str)str.indexOf("aa")!=-12.2 字符中是否有内容boolean isEmpty();2.3 字符串是否是以指定内容开头boolean startsWith(str)2.4 字符串是否是经指定内容结尾boolean endsWith(str)
|--3.转换
3.1 将数组转成字符串构造函数 :String ( char[] )String ( char[],offset ,count)String( byte[])String( byte[] , offset ,count )静态方法:static String copyValueOf( char [] ch);static String copyValueOf( char[] data ,int offset , int count )static String valueOf( char[] )3.2 将字符串转成数组char[] toCharArray()byte[] getByte()3.3 将基本数据类型转成字符串static String valueOf( int )static String valueOf(double)3+"" 等效于 String.ValueOf( 3 )3.4 将字符串转成大写或小写String toUpperCase()String toLowerCase()
|--4.切割String[] split(String regex) |--5.替换String replace(oldChar , newChar )String replace(CharSequence target, CharSequence replacement) String trim() 去除字符串两端的空格|--6.比较int comparaTo( String )
三、StringBuffer/StringBuilder
StringBuffer/StringBuilder都是一个容器,相较于数组,1.可以操作多个数据类型,2.这两个容器的长度都是可变的,所以对内存更加友好,程序运行的效率更高。3.最终会通过toString()方法转成字符串,StringBuffer是线程同步的,StringBuilder线程不同步,StringBuilder效率高些。作为一个容器,类比数据库常见功能有CRUD,即:Create—创建 Read—读取 Update—修改 Delete—删除
|--1. 存储StringBuffer append(数据) 数据可以是基本的常用类型 StringBuffer inser(插入的位置 , 数据) |--2. 删除StringBuffer delete( start , end ) 包含头,不包含尾StringBuffer deleteCharAt( index ) 删除指定位置的字符|--3. 获取char charAt( index )int indexOf( String str )int lastIndexOf(String str)int length()String subString( start ,end )void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)取一char数组StringBuffer reverse(); 反转|--4. 修改StringBuffer replace(start , end , string ) 指定开关及结尾替换成指定字符void setCharAt(index , char ch) 指定位置替换成指定字符
四、正则表达式
正则表达式是符合一定规则的表达式,是用于专门操作字符串的。用一些特定的符号来表示代码操作。正则表达式可以简化对字符串的操作。正则表达式有一个缺点是阅读性差。操作步骤:1.将正则表达式封装成对象;Pattern p = Pattern.compile(reg);2.让正则对象和要操作的字符串相关联;Matcher m =p.matcher(str);3.关联后,获取正则匹配引擎;4.通过引擎对符合规则的子串进行操作:
while(m.find()){System.out.print(m.group()+"\t");System.out.println(m.start()+"…………"+m.end());}其实String类中使用正则表达式的方法,底层调用的都是正则表达式中的Pattern类和Matcher类
|--1.匹配:String类中matchs()方法:boolean mathchs()String qq = "123455";String regex = "[1-9]\\d{4,14}";boolean flag = qq.mathchs(regex); |--2.切割:String类中的String[] split(String regex) String str = "ab bdd sdfsd yeyt"String regex ="\\b[a-z]+\\b"String[] st = str.split(regex);|--3.替换:String类中的String replaceAll(String regex , String replacement)String str = "abdfsddfsdfdfsdffaaa";String regex = "([a-z])\\1+";String st = str.replaceAll(regex);|--4.获取:将字符串中的符合规则的子串取出
package stringTest;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 1.针对"ming tian jiu yao fang jia le,haha.",找出连续仅包含4个字符的字符串 * 2.打印符合条件字符串的位置 * */public class RegexTest {public static void main(String[] args) {String str = "ming tian jiu yao fang jia le,haha.";String reg = "\\b[a-z]{4}\\b";//将规则封装成对象Pattern p = Pattern.compile(reg);//让正则对象和要作用的字符串相关联,获取匹配器对象MatcherMatcher m =p.matcher(str);//打印处理前的字符串System.out.println(str);while(m.find()){//打印符合规则的字符串System.out.print(m.group()+"\t");//打印符合规则字符串的开关和结尾System.out.println(m.start()+"…………"+m.end());}}}结果如下:
五、正则表达式的练习
package stringTest;/** *题目: *1.模拟一个trim方法,去除字符串两端的空格 *2.将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg","abfedcg"; *3.获取一个字符串在另一个字符串中出现的次数 *4.获取两个字符串中最大相同子串。 *abcwerthelloyuiodef *cvhelloobnm */public class StringFunDemo {public static void main(String[] args) {System.out.println(myTrim(" abc bc "));System.out.println(reverseString("abcd yeyt abcd ",5,8));System.out.println(stringCount("I miss you,just you miss me","ss"));System.out.println(getMaxSubString("fyeyt","kjk yeyt j"));}//练习一,去除字符串两端的空格public static String myTrim(String str){if(str==null)return null;int start=0,end=str.length()-1;//开头空字符检测while(start<=end && str.charAt(start)==' '){start++;}//结尾空字符检测while(start<=end && str.charAt(end)==' '){end--;}return str.substring(start, end+1);}//练习二:将一个字符串指定部分进行反转public static String reverseString(String str,int start,int end){char[] ch = str.toCharArray();char c;//中间变量//对要求反转的部分反转for(;start<end;start++,end--){c = ch[start];ch[start]=ch[end];ch[end]=c;}//排好序的数组构造新字符串,返回结果return new String(ch);}//练习三:获取一个字符串在另一个字符串中出现的次数public static int stringCount(String str,String key){int count=0,index =0;//每次查找后,都把查找点增加while((index = str.indexOf(key, index))!=-1){index = index + key.length();count++;}return count;}//练习四:获取两个字符串中最大相同子串public static String getMaxSubString(String s1,String s2){String min,max;String maxStr;if(s1.length()>=s2.length()){min=s2;max=s1;}else{min = s1;max = s2;}//遍历较短的字符串,所有组合从长到短与s1比较,如果包含则返回for(int x=0;x<min.length();x++){for(int y=0;y<=x;y++){maxStr =min.substring(y, min.length()-x+y);if(max.contains(maxStr)){ return maxStr ;}}}return null;}}运算结果:
0 0
- java基础—3.String类与正则表达式
- java基础之String类与正则表达式
- java基础String类和正则表达式
- java中的string类与正则表达式
- java基础复习 面向对象,String类,正则表达式
- 正则表达式与String类
- 黑马程序员——java基础——String类,正则表达式
- java正则表达式与String类完全解析
- Java与正则表达式之正则表达式基础
- Java String 正则表达式
- Java基础—正则表达式
- java基础--正则表达式:Pattern类与Matcher类详解
- 黑马程序员—java基础之反射与正则表达式
- java基础10:正则表达式与反射
- java基础11:正则表达式与反射
- 黑马程序员-Java基础(数组,String,StringBuffer,正则表达式)
- 黑马程序员——Java基础---String、StringBuffer和正则表达式
- java基础复习之通用API(Object,String,正则表达式,包装类,日期)
- Perl 内网发邮件问题
- POJ 2541 Binary Witch
- asp.net 弹出式日历控件 选择日期 Calendar控件
- 职责链模式(二):职责链模式概述
- mongodb的查询操作符
- java基础—3.String类与正则表达式
- EasyUI - DataGrid 去右边空白滚动条列
- 随笔
- 直方图求最大面积算法的原理
- IOS开发指南学习——分层架构设计
- Java annotation
- Android 开发最佳实践
- gpl avoid
- iOS开发系列课程(04) --- 文本框和视图控制器