2011-05-12 48 views
0

我在Arraylist中有一组字符串。带数字的java字符串

我想删除所有字符串,只有数字 也是这样的字符串:(0.75%),$ 1.5 ..基本上所有不包含字符。 2)我想在写入控制台之前删除字符串中的所有特殊字符。 “神应印神 & QUOT;包括应印:quoteIncluding “发现应该发现

+1

我闻到[正则表达式](http://download.oracle.com/javase/tutorial/essential/regex/)。 – JMelnik 2011-05-12 05:45:47

+0

“..一切都不包含字符..”这是线索!为什么不考虑'删除',为什么不考虑'包括','A-Z'和'a-z'只有26 + 26个字母。 – 2011-05-12 05:52:20

+0

你到目前为止尝试过什么? – MatthewD 2011-05-12 06:21:25

回答

0

当你说‘的人物,’​​我假设你的意思是只‘A到Z’和“A从A到Z”你可能想使用正则表达式(正则表达式)为D1E在评论中提到下面是一个使用的replaceAll方法的例子

import java.util.ArrayList; 

public class Test { 
    public static void main(String[] args) { 
     ArrayList<String> list = new ArrayList<String>(5); 
     list.add("\"God"); 
     list.add("&quot;Including"); 
     list.add("'find"); 
     list.add("24No3Numbers97"); 
     list.add("w0or5*d;"); 

     for (String s : list) { 
      s = s.replaceAll("[^a-zA-Z]",""); //use whatever regex you wish 
      System.out.println(s); 
     } 
    } 
} 

这段代码的输出如下:。


quotIncluding
找到
NoNumbers

的的replaceAll方法使用正则表达式和替换所有与第二个参数匹配(在这种情况下,空字符串)。

1

Java拥有非常好的Pattern class,它使用正则表达式。你一定要详细阅读。一个很好的参考指南是here.

我打算为您发布一个编码解决方案,但styfle击败了我!我会做不同,这里唯一的办法就是内部的for循环中,我会使用的模式和匹配器类,因为这样:

for(int i = 0; i < myArray.size(); i++){ 
    Pattern p = Pattern.compile("[a-z][A-Z]"); 
    Matcher m = p.matcher(myArray.get(i)); 
    boolean match = m.matches(); 
    //more code to get the string you want 
} 

但是过于笨重。 styfle的解决方案简洁而简单。

+0

很棒的回答。欢迎来到堆栈溢出! – 2011-05-12 12:44:23

+0

非常感谢!这个社区真棒。 :) – SpacePyro 2011-05-12 13:45:50