------------------------------------------------android培训、java培训、期待与您交流!-----------------------------------------------
StringBuffer
①特点
是一个容器,长度是可变化的,可以字节操作多个数据类型,最终会通过toString方法变成字符串
②重要方法
ⓐ存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
ⓑ删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。
ⓒ获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end)
ⓓ修改
StringBuffer replace(start,end,string);
void setCharAt(int index, char ch) ;
ⓔ反转
StringBuffer reverse();
ⓕ将缓冲区中指定数据存储到指定字符数组中
srcBegin,srcEnd源的开始和结束位置;dst,dstBegin目的数组和从目的数组的第几位开始存
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
正则表达式
①作用
用于专门操作字符串,用于一些特定的符号来表示一些代码操作
②好处
可以简化对字符串的复杂操作
③弊端
符号定义越多,正则越长,阅读性越差
④常见正则表达式规则(方便以后查找)
ⓐ字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
ⓑGreedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
ⓒ边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
⑤匹配
用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false
String tel = "16900001111";
匹配第一位为1第二位为358中的一个,后面9位为数字
String telReg = "1[358]\\d{9}";
System.out.println(tel.matches(telReg));
⑥切割
String split();
public static void splitDemo(String str,String reg)
{
String[] arr = str.split(reg);
System.out.println(arr.length);
for(String s : arr)
{
System.out.println(s);
}
}
按照多个空格来进行切割
splitDemo("zhangsan lisi wangwu"," +");
以.进行切割
splitDemo("zhangsan.lisi.wangwu","\\.");
以\\进行切割
splitDemo("c:\\abc\\a.txt"," \\\\ ");
按照叠词的形势进行切割,(.)代表任意一个字符,并且用()分了组,
\\1 +代表和前面的字符相同有一个和多个,\n(n就是组的编号)
splitDemo("erkktyqqquizzzzzo","(.)\\1+");
⑦替换
public static void replaceAllDemo(String str,String reg,String newStr)
{
str = str.replaceAll(reg,newStr);
System.out.println(str);
}
String str = "wer1389980000ty1234564uiod234345675f";
将字符串中超过5位数的数字替换成#
replaceAllDemo(str,"\\d{5,}","#");
String str1 = "erkktyqqquizzzzzo";
将重叠的字符替换成单个字母。zzzz->z,其中$1代表第一组的内容
replaceAllDemo(str1,"(.)\\1+","$1");
⑧获取
将字符串中的符合规则的子串取出
public static void getDemo()
{
String str = "ming tian jiu yao fang jia le ,da jia。";
//取出四个字符的单词\b代表以字符为边界
String reg = "\\b[a-z]{4}\\b";
//将规则封装成对象。
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m = p.matcher(str);
matches方法匹配是指针会移动
System.out.println("matches:"+m.matches());
//尝试查找与该模式匹配的输入序列的下一个子序列
while(m.find())
{
//返回由以前匹配操作所匹配的输入子序列
System.out.println(m.group());
System.out.println(m.start()+"...."+m.end());
}
}
正则表达式的一些例子
①从网页上获取邮件的地址
String mail = "abc12@sina.com";
对邮箱的匹配[a-zA-Z0-9_]+表示一位或者多位任意字符和数字
\\.[a-zA-Z]+表示以.后面跟一位或者多位任意字符
(\\.[a-zA-Z]+)+表示有多个组匹配这种情况.com.cn
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。
public static void getMails_1()throws Exception
{
URL url = new URL("http://192.168.1.254:8080/myweb/mail.html");
URLConnection conn = url.openConnection();
BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
String mailreg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
Pattern p = Pattern.compile(mailreg);
while((line=bufIn.readLine())!=null)
{
Matcher m = p.matcher(line);
while(m.find())
{
System.out.println(m.group());
}
}
}
②将重复的字符去掉String str = "我我...我我...我要..要要...要要...学学学....学学...编编编...编程..程.程程...程...程";
将重复的.号去掉
str = str.replaceAll("\\.+","");
System.out.println(str);
将重复的字去掉
str = str.replaceAll("(.)\\1+","$1");
System.out.println(str);
③将ip地址进行地址段顺序的排序
排出的结果应该是2.2.2.2 8.109.90.30 10.10.10.10等等
public static void ipSort()
{
String ip = "192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
先将字符串补上00保证每一位数都在3位及以上
ip = ip.replaceAll("(\\d+)","00$1");
System.out.println(ip);
把超过三位的多余0去掉
ip = ip.replaceAll("0*(\\d{3})","$1");
System.out.println(ip);
String[] arr = ip.split(" ");
对字符串进行排序
TreeSet<String> ts = new TreeSet<String>();
for(String s : arr)
{
ts.add(s);
}
for(String s : ts)
{
//把002.002.002.002这样的IP地址变为2.2.2.2
System.out.println(s.replaceAll("0*(\\d+)","$1"));
}
}
-----------------------------------------android培训、java培训、java学习型技术博客、期待与您交流! --------------------------
详情请查看:http://edu.youkuaiyun.com/heima