去掉字符串中的非字符 去掉一个字符串中的非字符,例如字符串“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来处理?这不是蛋疼 关于数据库操作的问题,求解 关于log4j的问题!!! HashMap取值问题 我的系统是64位的JDK请问高手们64位的JDK怎样才能转换成32位的 请教一个返回数据的问题 Java中的Properties类保存丢失信息?! 论文快完了,遇到问题了 收集JAVA中的正则表达式的用法 菜鸟关于string类取数的问题 请问如何取得一个字符的点阵宽度? 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[] ?