我可以用substring()将它拆分两次并分别保存两半,但由于我要求效率,我需要一个更好的解决方案,理想情况下,在一次运行中将两半保存在String []中。
答案 0 :(得分:2)
作为@Jon Skeet already mentioned,您应该真正分析性能,因为我无法想象,这实际上是瓶颈。但是,另一种解决方案是拆分String的char数组:
String str = "Hello, World!";
int index = 4;
char[] chs = str.toCharArray();
String part1 = new String(chs, 0, index);
String part2 = new String(chs, index, chs.length - index);
System.out.println(str);
System.out.println(part1);
System.out.println(part2);
打印:
Hello, World!
Hell
o, World!
这可能是一般性实施:
public static String[] split(String str, int index) {
if (index < 0 || index >= str.length()) {
throw new IndexOutOfBoundsException("Invalid index: " + index);
}
char[] chs = str.toCharArray();
return new String[] { new String(chs, 0, index), new String(chs, index, chs.length - index) };
}
这种方法的问题是, (!)效率高于简单
substring()
调用,因为我的代码创建了一个对象,而不是使用两个{{ 1}}调用(数组是另外创建的对象)。事实上,substring()
正是我在代码中所做的,而不是创建数组。唯一的区别是,通过两次调用substring()
,索引将被检查两次。将其与对象分配成本进行比较取决于您。
答案 1 :(得分:0)
尝试stringName.split('*')
,其中*
是您要将字符串拆分为的字符。它返回一个String数组。