Hive - 从字符串中删除子字符串
Hive - Remove substring from string
我需要用空字符串替换给定字符串中的子字符串,该子字符串出现在字符串的不同位置。
我想从这些可能的字符串组合中删除 "fruit":"apple"
并期望相应的字符串:
{"client":"web","fruit":"apple"} --> {"client":"web"}
{"fruit":"apple","client":"web"} --> {"client":"web"}
{"client":"web","fruit":"apple","version":"v1.0"} --> {"client":"web","version":"v1.0"}
{"fruit":"apple"} --> null or empty string
我使用了 regexp_replace(str, "\,*\"fruit\"\:\"apple\"", "")
,但没有得到预期的结果。构造正则表达式的正确方法是什么?
您似乎正在处理 JSON 格式的数据。根据包含的依赖项,您可以完全不用正则表达式来实现它。
例如,如果您正在使用 Google 的 Gson 库,那么您可以将 String 解析为 JsonObject,然后从中删除 属性
String input = "your data";
JsonParser parser = new JsonParser();
JsonObject o = parser.parse(input).getAsJsonObject();
try {
String foundValue = o.getAsJsonPrimitive("fruit").getAsString();
if ("apple".equals(foundValue)) {
o.remove("fruit");
}
} catch (Exception e) {
e.printStackTrace();
}
String filteredData = o.toJSONString();
P.S。代码不是最终版本,它可能需要处理一些情况(当没有这样的字段,或者它包含非原始值),需要进一步的细节来覆盖它
P.P.S。 IMO,在这种情况下使用正则表达式会降低代码的可读性和灵活性
我需要用空字符串替换给定字符串中的子字符串,该子字符串出现在字符串的不同位置。
我想从这些可能的字符串组合中删除 "fruit":"apple"
并期望相应的字符串:
{"client":"web","fruit":"apple"} --> {"client":"web"}
{"fruit":"apple","client":"web"} --> {"client":"web"}
{"client":"web","fruit":"apple","version":"v1.0"} --> {"client":"web","version":"v1.0"}
{"fruit":"apple"} --> null or empty string
我使用了 regexp_replace(str, "\,*\"fruit\"\:\"apple\"", "")
,但没有得到预期的结果。构造正则表达式的正确方法是什么?
您似乎正在处理 JSON 格式的数据。根据包含的依赖项,您可以完全不用正则表达式来实现它。
例如,如果您正在使用 Google 的 Gson 库,那么您可以将 String 解析为 JsonObject,然后从中删除 属性
String input = "your data";
JsonParser parser = new JsonParser();
JsonObject o = parser.parse(input).getAsJsonObject();
try {
String foundValue = o.getAsJsonPrimitive("fruit").getAsString();
if ("apple".equals(foundValue)) {
o.remove("fruit");
}
} catch (Exception e) {
e.printStackTrace();
}
String filteredData = o.toJSONString();
P.S。代码不是最终版本,它可能需要处理一些情况(当没有这样的字段,或者它包含非原始值),需要进一步的细节来覆盖它
P.P.S。 IMO,在这种情况下使用正则表达式会降低代码的可读性和灵活性