当前位置:编程学习 > JAVA >>

字符串问题

写一段代码,要求输入一字符串(如:20pac10hira00),过滤掉里面的数字(结果:pachira) --------------------编程问答-------------------- 将字符串转换成字符数组,然后判断每个字符是不是数字也就是在不在'0'-‘9’之间,是的就删除,保留不是的,然后重新构建一个字符串 --------------------编程问答--------------------
String s="20pac10hira00";
s=s.replaceAll("\\d", "");
--------------------编程问答-------------------- 求代码求注释 --------------------编程问答--------------------
引用 2 楼 abc41106 的回复:
String s="20pac10hira00";
s=s.replaceAll("\\d", "");

正则表达式,\d代表数组,replaceAll全部替换 --------------------编程问答-------------------- "\\d"是如何解释 --------------------编程问答-------------------- public class Test {
/**
 *Test
 */

public static void main(String[] args) {
String str = "sfadsf5sdfsd5454s5ds";
String s ;
Pattern p = Pattern.compile("[0-9]*"); //正则表达式,数字类型
s= p.matcher(str).replaceAll(""); //删除字符串中的数字
System.out.println(s);

}
}
--------------------编程问答-------------------- 先转化为char[],然后循环判断是否数字就行:
1、str.matches("[0-9]+");
2、Character.isDigit(num[i])
两种方法都可以。 --------------------编程问答--------------------
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex_abc {
public static void main(String[] args)
{
String str = "20pac10hira00";
//正则匹配,a到z的和A到Z的 凡是符合条件的都给我取出来
String reg = "[a-zA-Z]+";
Pattern p = Pattern.compile(reg);

//匹配器作用在str这个字符串上
Matcher m = p.matcher(str);
//开始找,如果有,就打印出来
while(m.find())
{
System.out.print(m.group());
}
}
}
--------------------编程问答-------------------- \\d代表数字,也可以[0-9]这样表示 --------------------编程问答--------------------

String str = "20pac10hira00";
String a = "";
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
if(ch[i]>='a' && ch[i]<='z'){
a+=ch[i];
}
}
System.out.println(a);

除了正则表达式,我还想了这种字符串切割的方法,可行 --------------------编程问答--------------------
引用 3 楼 zmysxl 的回复:
求代码求注释

引用
public String replaceAll(String regex,
                         String replacement)

regex代表一个正则表达式,来匹配字符串中要替换的部分
replacement代表用来替换的字符串
正则表达式中\d代表数字
但是在String中\又有特殊意义,所以要用"\\d"

这个函数是将替换的结果作为返回值返回的,也就是说
s.replaceAll其实并没有改变s --------------------编程问答-------------------- import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex_abc {
public static void main(String[] args)
{
String str = "20pac10hira00";
//正则匹配,a到z的和A到Z的 凡是符合条件的都给我取出来
String reg = "[a-zA-Z]+";
Pattern p = Pattern.compile(reg);

//匹配器作用在str这个字符串上
Matcher m = p.matcher(str);
//开始找,如果有,就打印出来
while(m.find())
{
System.out.print(m.group());
}
}
}
用正则表达式确实是个不错的选择,此处它只要处理删除数字,因而用下面这种方式较好。

String str = "20pac10hira00";
String a = "";
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
if(ch[i]>='a' && ch[i]<='z'){
a+=ch[i];
}
}
System.out.println(a);
--------------------编程问答-------------------- 这个问题竟然回复到了12楼  唉
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,