【发布时间】:2016-10-22 22:10:27
【问题描述】:
我正在尝试从 JSON 对象中删除所有斜线,然后将其添加到数组列表中。无论我在 Regex 中输入什么内容,它都是这样的: 我还想删除括号和重复的字符串,但即使尝试删除斜杠也不起作用,所以我正在尝试构建它。就像测试一样,我尝试替换字符串中的任何内容,但无论我选择什么(甚至是字母数字),它都不起作用。
类别列表中项目的示例输出: "[[\"地中海\",\"地中海\"],[\"希腊语\",\"希腊语\"]]"
private static final ArrayList<String> BusinessIDList = new ArrayList<>();
private static ArrayList<String> RatingList = new ArrayList<>();
private static ArrayList<String> cityList = new ArrayList<>();
private static ArrayList<String> stateList = new ArrayList<>();
private static ArrayList<String> addressList = new ArrayList<>();
private static ArrayList<String> categoryList = new ArrayList<>();
private static ArrayList<String> phoneList = new ArrayList<>();
private static ArrayList<String> nameList = new ArrayList<>();
private static void queryAPI(YelpAPI yelpApi, YelpAPICLI yelpApiCli) {
String searchResponseJSON = yelpApi.searchForBusinessesByLocation(yelpApiCli.term, yelpApiCli.location);
JSONParser parser = new JSONParser();
JSONObject response = null;
try {
response = (JSONObject) parser.parse(searchResponseJSON);
} catch (ParseException pe) {
System.out.println("Error: could not parse JSON response:");
System.out.println(searchResponseJSON);
System.exit(1);
}
JSONArray businesses = (JSONArray) response.get("businesses");
for (int i = 0; i < businesses.size(); i++) {
JSONObject temp = (JSONObject) businesses.get(i);
JSONObject temp1 = (JSONObject) temp.get("location");
BusinessIDList.add(temp.get("id").toString());
RatingList.add(temp.get("rating").toString());
cityList.add(temp1.get("city").toString());
stateList.add(temp1.get("state_code").toString());
phoneList.add(temp.get("phone").toString());
String tempCat = temp.get("categories").toString();
tempCat = tempCat.replaceAll("\\\\", " ");
categoryList.add(tempCat);
String tempAdr = temp1.get("address").toString();
tempAdr = tempAdr.replaceAll("\\\\", " ");
addressList.add(tempAdr);
nameList.add(temp.get("name").toString());
}
【问题讨论】:
-
让我们保持简单;
String t="[[\\\"Med\\\",\\\"med\\\"]"; t = t.replaceAlll("\\\\",""); System.out.println(t); -
我无法重现您的问题,但是您的代码不完整,无法单独运行。您能否发布一个重现问题的minimal reproducible example?
-
没问题,抱歉。
-
新代码肯定不是最小的,也不是完整的。如果您希望人们帮助您,您必须提供代码和输入数据,使其(轻松)可运行以重现问题。请仔细阅读minimal reproducible example帮助页面。
-
我的意思是,只有你能修复你的代码。你问一个关于为什么模式没有按预期匹配或替换的问题,你展示了一个我们看到模式的例子,你告诉我们输入是什么,然后声称输出没有改变。出色地。试一试就行了。全靠自己。
System.out.println("[[\\\"Iknow\\\",\\\"whatImDoing\\\"]]".replaceAll("\\\\",""));我想你会发现你的问题与模式无关,replaceAll也与其他地方无关。