[英]Split and pair substrings by condition
我有一個像這樣的字符串: "aa-bb,ccdd,eeff,gg-gg,cc-gg"
。 我需要用'-'
符號分割字符串並從中創建兩個字符串,但是如果原始字符串的逗號分隔部分不包含'-'
,則需要使用一些占位符而不是子字符串。 在上述示例的情況下,輸出應為:
字串1:
"{aa,ccdd,eeff,gg,cc}"
字串2:
"{bb,0,0,gg,gg}"
我不能使用lastIndexOf()
方法,因為輸入位於一個字符串中。 我不確定零件的數量。
if(rawIndication.contains("-")){
String[] parts = rawIndication.split("-");
String part1 = parts[0];
String part2 = parts[1];
}
這是使用流的Java 8解決方案。 邏輯是先用逗號分割輸入字符串,生成一個術語數組。 然后,對於每個術語,我們再次在破折號處分開,保留第一個條目。 如果術語沒有破折號,則整個字符串將被保留。 最后,我們連接回一個輸出字符串。
String input = "aa-bb,ccdd,eeff,gg-gg,cc-gg";
int pos = 1;
String output = String.join(",", Arrays.stream(parts)
.map(e -> e.split("-").length >= (pos+1) ? e.split("-")[pos] : "0")
.toArray(String[]::new));
System.out.println(output);
輸出:
bb,0,0,gg,gg
使用解決問題的方式,實際上應該首先用逗號分隔。 然后,您應該遍歷調用結果以使用連字符對輸出數組中的每個字符串進行split
和拆分(如果存在的話)。 如果沒有連字符,則可以在字符串2上添加0
,將字符串本身添加到字符串1。如果有連字符,則將左側添加到字符串1,將右側添加到字符串2。這是一種方法你可以這樣做,
if(rawIndication.contains(",")){
String s1 = "{";
String s2 = "{";
String[] parts = rawIndication.split(",");
for(int i = 0; i < parts.length; i++) {
if(parts[i].contains("-") {
String[] moreParts = parts[i].split(",");
s1 = s1 + moreParts[0] + ",";
s2 = s2 + moreParts[1] + ",";
}
else{
s1 = s1 + parts[i] + ",";
s2 = "0,";
}
}
s1 = s1.substring(0, s1.length() - 1); //remove last extra comma
s2 = s2.substring(0, s2.length() - 1); //remove last extra comma
s1 = s1 + "}";
s2 = s2 + "}";
}
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
// First split the source String by comma to separate main parts
String[] mainParts = sourceStr.split(",");
for (String mainPart: mainParts) {
// Check if each part contains '-' character
if (mainPart.contains("-")) {
// If contains '-', split and add the 2 parts to 2 arrays
String[] subParts = mainPart.split("-");
list1.add(subParts[0]);
list2.add(subParts[1]);
} else {
// If does not contain '-', add complete part to 1st array and add placeholder to 2nd array
list1.add(mainPart);
list2.add("0");
}
}
// Build the final Strings by joining String parts by commas and enclosing between parentheses
String str1 = "{" + String.join(",", list1) + "}";
String str2 = "{" + String.join(",", list2) + "}";
System.out.println(str1);
System.out.println(str2);
我認為這可以解決您的問題。
private static void splitStrings() {
List<String> list = Arrays.asList("aa-bb", "ccdd", "eeff", "gg-gg", "cc-gg");
List firstPartList = new ArrayList<>();
List secondPartList = new ArrayList<>();
for (String undividedString : list){
if(undividedString.contains("-")){
String[] dividedParts = undividedString.split("-");
String firstPart = dividedParts[0];
String secondPart = dividedParts[1];
firstPartList.add(firstPart);
secondPartList.add(secondPart);
} else{
firstPartList.add(undividedString);
secondPartList.add("0");
}
}
System.out.println(firstPartList);
System.out.println(secondPartList);
}
輸出是-
[aa, ccdd, eeff, gg, cc]
[bb, 0, 0, gg, gg]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.