我有一个像ABCDEFG
这样的输入字符串,必须输出一个包含输入字符串的第1,第3和第6个位置的字符串:ACF
。实现这一目标的最佳方法是什么,比3个one-char子串的明显连接更好?
谢谢!
更新:感谢您的解决方案,他们很有帮助! 另一个相关问题:如果我需要大部分输入字符串,解决方案是什么,即输出字符串包含所有字符,但第二个:ACDEFG
。 StringBuilder
+ charAt()
最快?如果我的输入字符串很长(100个字符),那么最好连接(使用StringBuilder
)第一个char和substring(2)
答案 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));