去掉字符串中的非字符 去掉一个字符串中的非字符,例如字符串“qwe,asd.rty;ert” 得到的结果为“qweasdrtyert” 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是楼主,这个例子中,不允许使用java中的一些类或者包 将字符强转为数字,a-z对应数字97-122,A-Z对应65-90.剩下的就你自己来吧 public static void main(String[] args) { String str="qwe,asd.rty;ert"; StringBuffer newStr=new StringBuffer(); StringBuffer newStr2=new StringBuffer(); byte[] arr=str.getBytes(); for (byte b : arr) { //关键就是这里判断只有字母才是合法字符,添加其它合法字符继续写 || 判断即可 if((b>=97 && b<=122) || (b>=65 && b<=90)) newStr.append((char)b); else newStr2.append((char)b); } System.out.println("过滤后字符串:"+newStr); System.out.println("被过滤的字符:"+newStr2); } 用正则,很方便 public static void main(String[] args) { String s = "qwe,asd.rty;ert"; System.out.println(s.replaceAll("[^a-zA-Z]", "")); } replaceAllpublic String replaceAll(String regex, String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同: Pattern.compile(regex).matcher(str).replaceAll(repl)注意,在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher.replaceAll。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。 参数:regex - 用来匹配此字符串的正则表达式replacement - 用来替换每个匹配项的字符串 返回:所得 String 抛出: PatternSyntaxException - 如果正则表达式的语法无效从以下版本开始: 1.4 另请参见:Pattern public static void main(String args[]) { System.out.println("qwe,asd.rty;ert".replaceAll("\\W", ""));} 我是楼主,这个例子中,不允许使用java中的一些类或者包啪,打正则们的脸妥妥的 提供了一个 字符串又不准使用 String类提供的方法? 这问题有水平了 , 谁知道 , 不用java中的类和包 我们怎么装这个字符串? String 本身就是java自带的类。楼主可否用C写? 难倒是用 char[] ? char asd="qwe,asd.rty;ert"; 不报错? 不得toString? 那请你先定义出“qwe,asd.rty;ert”这个东西来!!!那你为什么又要用String的方式,String难道不是Java中的类吗?那你又何苦用Java来处理?这不是蛋疼 String的问题,请大家指教。 一道java笔试题 TreeSet加入的元素没有实现Comparable应该是在编译期检查的吧? 泛型 问题 <T> 大家来看看这道题的结果 java线程怎么调用java的application.class? 菜问题。 我不是很明白,请帮忙! 真正的初学者,真正的小问题,真正的需要你的帮助 用什么数据结构好? JNI中多次调用NewObject导致jvm崩溃 帮忙改下错误-AVL树
public static void main(String[] args) {
String str="qwe,asd.rty;ert";
StringBuffer newStr=new StringBuffer();
StringBuffer newStr2=new StringBuffer();
byte[] arr=str.getBytes();
for (byte b : arr) {
//关键就是这里判断只有字母才是合法字符,添加其它合法字符继续写 || 判断即可
if((b>=97 && b<=122) || (b>=65 && b<=90))
newStr.append((char)b);
else
newStr2.append((char)b);
}
System.out.println("过滤后字符串:"+newStr);
System.out.println("被过滤的字符:"+newStr2);
}
String s = "qwe,asd.rty;ert";
System.out.println(s.replaceAll("[^a-zA-Z]", ""));
}
public String replaceAll(String regex,
String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同: Pattern.compile(regex).matcher(str).replaceAll(repl)
注意,在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher.replaceAll。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。
参数:
regex - 用来匹配此字符串的正则表达式
replacement - 用来替换每个匹配项的字符串
返回:
所得 String
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
Pattern
public static void main(String args[]) {
System.out.println("qwe,asd.rty;ert".replaceAll("\\W", ""));
}
难倒是用 char[] ?