天天看点

字符数组,字符串数组,字符串的相互转换

怎么把字符数组转换成字符串?
例如:char[] a={'a','b','c'};
最常用的方法是通过toString方法:
Arrays.toString(a);可是这样得到的字符串是[a,b,c],而不是“abc”。
那么怎么变成“abc”呢?
下面的两种方法最常见,也是应用最广泛的。
1:直接声明,String s=new String(a);
2:String.valueOf(Char[] a);
这个转换很简单,下面就来看看字符串数组怎么转换成字符串吧。因为这个string类是不可变类,所以就需要用到StringBuffer类。
下面来举例子说明
String[] str = {"abc", "bcd", "def"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < str.length; i++){
 sb. append(str[i]);
}
String s = sb.toString();
其实可以把StringBuffer换成StringBuilder因为这个是线程安全的,而且速度略快。
其实很多情况字符数组或者字符串数组都是要求将数字和字母分开,那么这时就可以有很多种方法,下面介绍几个比较简单的方法:
    1:String s = "abcd0a123".replaceAll("\\d+", "");
    String n = "abcd01a23".replaceAll("\\D+", "");


    2:Pattern p_number = Pattern.compile("\\d+");//匹配数字
    Pattern p_char = Pattern.compile([a-zA-Z]+);//匹配字母

    3:使用toCharArray()方法,把字符串变成字符数组,然后一个一个遍历,找到符合数字的就放到整数数组中,不是就放到字符数组中。

    使用了正则表达式,这也是正则表达式的强大之处。
    那么分开之后,经常是要求把数字字符串变成单个数字,那么问题来了,怎么去转换呢?
    下面的代码很好的诠释了toCharArray()方法的简洁之处了
public static void main(String[] args) throws Exception 
    { 
        String a = "1234567";
        char b[] = a.toCharArray();
        for(int i=0;i<b.length;i++)
        {
            String c = b[i]+"";
            int d = Integer.parseInt(c);
            System.out.println(d);
        }
    }
 当然还有一个方法也很简单就是挨个遍历,或者使用Integer.valueOf()方法。
 char[] a={'1','2','3'};
String mString=String.valueOf(a);
int u=Integer.valueOf(mString);
 System.out.println(u);
 其实还有很多方法,在此就不列举了(主要是自己没有想到)。