字符串问题
写一段代码,要求输入一字符串(如:20pac10hira00),过滤掉里面的数字(结果:pachira) --------------------编程问答-------------------- 将字符串转换成字符数组,然后判断每个字符是不是数字也就是在不在'0'-‘9’之间,是的就删除,保留不是的,然后重新构建一个字符串 --------------------编程问答--------------------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;--------------------编程问答-------------------- \\d代表数字,也可以[0-9]这样表示 --------------------编程问答--------------------
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);
除了正则表达式,我还想了这种字符串切割的方法,可行 --------------------编程问答--------------------
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