Tôi muốn thực hiện nhiều tác vụ trên một chuỗi. tôi cần phải nhận được một chuỗi và trích xuất khác nhau phụ chuỗi bằng cách sử dụng dấu phân cách ("/"
), sau đó đảo ngược danh sách các tiểu chuỗi và cuối cùng tham gia cùng họ sử dụng một delimiter ("."
) sao cho /tmp/test/hello/world/
sẽ biến thành: world.hello.test.tmp
Java 8 Luồng để thao tác chuỗi
sử dụng Java 7 mã được như sau:
String str ="/tmp/test/";
List<String> elephantList = new ArrayList<String>(Arrays.asList(str.split("/")));
StringBuilder sb = new StringBuilder();
for (int i=elephantList.size()-1; i>-1; i--) {
String a = elephantList.get(i);
if (a.equals(""))
{
elephantList.remove(i);
}
else
{
sb.append(a);
sb.append('.');
}
}
sb.setLength(sb.length() - 1);
System.out.println("result" + elephantList + " " + sb.toString());
tôi đã tự hỏi làm thế nào tôi có thể làm điều tương tự sử dụng Java 8 suối và chức năng nó có cho Strings tham gia
tự hỏi liệu bạn có giảm suy nghĩ hay không, khi bạn viết "ít có thể đọc được". 'reduce ((s1, s2) -> String.join (".", s2, s1))' với tôi có vẻ như có thể đọc được như 'collection', rồi' reverse' và sau đó 'join' :-) – Roland
Sử dụng' Path' là hệ điều hành độc lập, nếu tác vụ thực sự là thay thế các ký tự phân tách của 'FileSystem' mặc định và không phải là' '/' 'cụ thể, như được hỏi trong câu hỏi. Nếu chúng ta đang nói, ví dụ về các phần URI hoặc các mục ZIP file, đây có thể không phải là giải pháp đúng (và thực sự * thêm * – Holger
@ Holger, bạn nói đúng, đó là lý do tại sao tôi giả mạo và nói rằng "thường là" tốt hơn để sử dụng "Đường dẫn". Tôi không biết bối cảnh của câu hỏi, vì vậy tôi cảm thấy nó sẽ là tốt để – Misha