-4

我有一个类似的输入字符串,ABCDEFG并且必须输出一个包含输入字符串的第 1、第 3 和第 6 个位置的字符串:ACF. 完成此任务的最佳方法是什么,比 3 个单字符子字符串的明显串联更好的方法是什么?谢谢!

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

4

5 回答 5

1
String result = "" + input.charAt(0) + input.charAt(2) + input.charAt(5);
于 2013-04-11T10:27:09.243 回答
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)));
    }
于 2013-04-11T10:27:56.157 回答
1
String x = "ABCDEFG";
String result = String.format("%c%c%c", x.charAt(0), x.charAt(2), x.charAt(4));
于 2013-04-11T10:30:56.750 回答
0

您可以使用通过给定索引返回字符串字符的类charAt(int)方法。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));
于 2013-04-11T10:37:06.820 回答
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);
}
于 2013-04-11T10:34:00.497 回答