您的位置:首页 > 其它

利用Pattern和Matcher模仿String方法操作字符串

2013-08-12 13:02 260 查看
首先写自己的类MyString:

/*
此类是用自己写的String类来练习正则表达式的几个功能的,包括查找、替换、分割和提取
*/
import java.util.regex.*;
public class MyString
{
private String str;
/**
* @deprecated:生成一个MyString实例
* @param str:初始化MyString
* */
public MyString(String str)
{
this.str = str;
}
/**
* @deprecated:获得字符串
* @return:返回MyString的字符串
* */
public String getString()
{
return str;
}
/**
* @deprecated:判断MyString对象里是否含有符合regex的字符串
* @param regex:正则表达式
* @return:存在返回true,否则返回false
* */
public boolean contains(String regex)
{
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(this.str);
return m.find();
}
/**
* @deprecated:用replacement替换所有符合regex规则的字符串
* @param regex:正则表达式
* @param replacement:用来替换满足要求的字符串
* */
public void replaceAll(String regex,String replacement)
{
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(this.str);
this.str = m.replaceAll(replacement);
}
/**
* @deprecated:按照regex来分割字符串
* @param regex:正则表达式
* @return:返回分割出来的字符串组成的字符串数组
* */
public String[] split(String regex)
{
Pattern p = Pattern.compile(regex);
return p.split(this.str);
}
/**
* @deprecated:按照regex来查找字符串
* @param regex:正则表达式
* @return:返回查找出来的咯咯字符串组成的字符串数组
* */
public String[] find(String regex)
{
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(this.str);
int i = 0;
while(m.find())
{
++i;
}
String str[] = new String [i];
m = p.matcher(this.str);
i = 0;
while(m.find())
{
str[i++] =m.group();
}
return str;
}
}

利用main函数来检查输出结果,具体代码如下:

public class MyStringDemo
{
public static void main(String str[])
{
MyString s = new MyString("www.aiai.edu.cn www.ahjzu.edu.cn");
//测试contains函数的正确性
System.out.println("检查字符串中是否有相应的字符串,如果有结果是true,没有结果是false。结果是:");
System.out.println(s.contains("a\\D*u"));//查找以a开头u结尾中间是非数字的字符串
//测试replaceAll函数的正确性
s.replaceAll("a\\D{5,10}u","google.com");//查找以a开头u结尾中间是非数字,且长度在5-10之间的字符串
System.out.println("替换后的字符串是:" + s.getString());

//测试split函数的正确性
System.out.println("现在打印分割后的字符串:");
for(String st:s.split("google"))
{
System.out.println(st);
}
//测试find函数的正确性
System.out.println("现在打印查找到的字符串:");
for(String st:s.find("w{3}+\\.[\\.\\w]+\\.cn"))	//提取以www.开头.cn结尾的字符串
{
System.out.println(st);
}
}
}


输出结果如下图:




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息