我正在使用Java中的String和String []。
我有一个String [],想转换为String,但不希望其中包含最后一个索引值。
//## AppDelegate.swift
import UIKit
import Fabric
import Crashlytics
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
Fabric.with([Crashlytics.self])
return true
}
}
//## ViewController.swift
//## Put a button in center, with `@IBAction` when clicked.
@IBAction func OnBtnTest(_ sender: Any) {
Crashlytics.sharedInstance().crash()
}
我只希望新字符串为String[] arr = new String[]{"1","2","3","4"};
。
是的,我可以迭代arr直到倒数第二个索引,并在新字符串中分配值。但是还有其他更聪明的方法吗?
答案 0 :(得分:0)
我考虑三种方式。
第一个正在使用StringBuilder
。这使您可以完全控制垃圾,从而减少垃圾。 (我想要这个)
public static String convert(String... arr) {
// in case of arr is really big, then it's better to first
// calculate required internal buffer size, to exclude array copy
StringBuilder buf = new StringBuilder();
for(int i = 0; i < arr.length - 1; i++)
buf.append(arr[i]);
return buf.toString();
}
另一种方法是使用Java8功能String.join()
:
public static String convert(String... arr) {
return String.join("", arr).substring(0, arr.length - 1);
}
最后使用Stream
:
public static String convert(String... arr) {
return Arrays.stream(arr, 0, arr.length - 1).collect(Collectors.joining(""));
}
答案 1 :(得分:-1)
尝试
String[] arr = new String[]{"1","2","3","4"};
String newString = "";
for (int i = 0; i < arr.length -1 ; i++) {
newString += arr[i];
}
System.out.print(newString);
输出
123