在java中提取字符串部分的最佳实践

时间:2013-04-11 10:22:59

标签: java string

我有一个像ABCDEFG这样的输入字符串,必须输出一个包含输入字符串的第1,第3和第6个位置的字符串:ACF。实现这一目标的最佳方法是什么,比3个one-char子串的明显连接更好? 谢谢!

更新:感谢您的解决方案,他们很有帮助! 另一个相关问题:如果我需要大部分输入字符串,解决方案是什么,即输出字符串包含所有字符,但第二个:ACDEFGStringBuilder + charAt()最快?如果我的输入字符串很长(100个字符),那么最好连接(使用StringBuilder)第一个char和substring(2)

5 个答案:

答案 0 :(得分:1)

String result = "" + input.charAt(0) + input.charAt(2) + input.charAt(5);

答案 1 :(得分:1)

substring方法是一个耗时的方法,除了它每次调用时从头开始解析字符串的事实。 请尝试使用chartAt方法并附加到StringBuilder而不是像这样连接在一个String中:

public static void main(String[] args){
        String s = "ABCDEFGH";
        System.out.println(new StringBuilder().append(s.charAt(0)).append(s.charAt(2)).append(s.charAt(5)));
    }

答案 2 :(得分:1)

String x = "ABCDEFG";
String result = String.format("%c%c%c", x.charAt(0), x.charAt(2), x.charAt(4));

答案 3 :(得分:0)

如果你需要一个字母选择功能,如下面的charsAt

String t = charsAt("ABCDEFG", 0, 2, 5); // Zero based indices

public String charsAt(String s, int... indices) {
    char[] chs = new char[indices.length];
    for (int i = 0; i < chs.length; ++i) {
        chs[i] = s.charAt(indices[i]);
    }
    return new String(chs);
}

答案 4 :(得分:0)

您可以使用charAt(int)类的String方法,该方法返回给定索引的String字符。但它返回char值。因此,您必须使用String方法将其转换为Character.toString(char)
你可以这样做:

String input = "ABCDEFG";

String result = Character.toString(input.charAt(0)) + 
                Character.toString(input.charAt(2)) + 
                 Character.toString(input.charAt(5));