[英]How to split java string to get 5 substring on the delimiter ","
我有一個 java 字符串作為服務器的響應["This is my "json response", "jshj" "," "sdjfh,sfjg" ",""Abs, "jshj" ",""Abs, "jshj" ",""Abs, "jshj"",""Abs, "jshj" "].
我想在分隔符“,”上將字符串拆分為 5 個子字符串,以便我可以將結果存儲到數組中。
預期輸出是:
這是我的“json 響應”,“jshj”“sdjfh,sfjg”“Abs,“jshj”“Abs,“jshj”“Abs,“jshj”“Abs,“jshj”
以下是我的做法:
String arrayGenerated[] =result.replaceAll("[\\[\\]\"]", "").split(__________,5);
return arrayGenerated;
請建議我應該在拆分部分提到什么。
您可以按照以下步驟進行操作:
public class Main {
public static void main(String[] args) {
String resString = "[\"This is my \"json response\", \"jshj\" \",\" \"sdjfh,sfjg\" \",\"\"Abs, \"jshj\" \",\"\"Abs, \"jshj\" \",\"\"Abs, \"jshj\"\",\"\"Abs, \"jshj\" \"]";
String str = resString.replaceAll("\\[", "").replaceAll("\\]", ""); // Remove [ and ]
String substrs[] = str.split("\",\""); // Split at ","
for(int i=0;i<substrs.length;i++)
substrs[i]=substrs[i].trim(); // Trim each substring
int li=substrs.length-1; //Index of last substring in the array
substrs[li]=substrs[li].substring(0,substrs[li].lastIndexOf("\"")).trim(); // In the last String, remove extra " from the end
for(String substr:substrs)
System.out.println(substr);
}
}
輸出:
"This is my "json response", "jshj"
"sdjfh,sfjg"
"Abs, "jshj"
"Abs, "jshj"
"Abs, "jshj"
"Abs, "jshj"
解析服務器響應后,可以使用String.split(“ regular expression”)方法拆分響應。
String a = "[\"This is my \"json response\", \"jshj\" \",\" \"sdjfh,sfjg\" \",\"\"Abs, \"jshj\" \",\"\"Abs, \"jshj\" \",\"\"Abs, \"jshj\"\",\"\"Abs, \"jshj\" \"]";
String arr[] = a.split("\",\"");
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test1222 {
public static void main(String[]args)
{
String fileName = "C:\\\filepath";
List<String> list = null;
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
list = stream.collect(Collectors.toList());
} catch (IOException e) {
e.printStackTrace();
}
String str = list.get(0);
String str1 = str.replaceAll("\\[", "").replaceAll("\\]","");
String[] strArr = str1.split(",");
List<String> resultArr = Arrays.asList(strArr);
List<String> result = resultArr.stream().collect(Collectors.toList());
result.forEach(System.out::println);
}
}
您可以傳遞服務器響應,然后按如下所示拆分響應,
String str = "[\"This is my \"json response\", \"jshj\" \",\" \"sdjfh,sfjg\" \",\"\"Abs, \"jshj\" \",\"\"Abs, \"jshj\" \",\"\"Abs, \"jshj\"\",\"\"Abs, \"jshj\" \"]";
str = str.replaceAll("\\[", "").replaceAll("\\]", ""); // To remove []
List<String> list = Arrays.asList(str.split(",")); // Simply separate words by comma to a list that you can iterate
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String next = iterator.next();
System.out.println(next);
}
如果您需要從服務器響應中刪除雙引號,則可以使用以下語句,
str.replaceAll("\"", "")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.