我假设您不仅想使用 url 编码发送它,而且另一方面也对其进行解码并返回相同的 2 个字符串数组变量。
正如您已经发现的那样,您需要将字符串数组转换为单个字符串变量。
另一篇文章展示了如何轻松地将字符串数组转换为单个字符串。但它没有显示如何解析它。
您需要的是 2 个分隔符(例如逗号和分号),一个用于分隔数组中的值,另一个用于分隔数组。
StringBuilder b = new StringBuilder();
b.append(nearByColgs[0]);
for (int i=1; i<nearByColgs.length;i++) {
b.append(',').append(nearByColgs[i]);
}
b.append(';')
b.append(interests[0]);
for (int i=1; i<interests.length;i++) {
b.append(',').append(interests[i]);
}
String concatenated = b.toString();
String encoded = URLEncoder.encode(concatenated ,"UTF-8");
另一方面,您然后再次解码编码版本。
String decoded = URLDecoder.decode(encoded, "UTF-8");
String[] subArrays = decoded.split(";")
然后您可以再次恢复原始数据
String[] nearbyColgs = subArrays[0].split(",");
String interests = subArrays[1].split(",");
当然,这仅在您的原始数据不包含使用的 2 个分隔符之一时才有效。
如果是这样,请使用其他分隔符(如“a”和“b”,或任何您需要的)或使用更复杂的算法来连接字符串并使用引用方案(如 CSV 标准)。
或者编码逻辑查找未使用的 2 个字符,并将这 2 个字符作为要编码的字符串中的第一个字符添加,解码端接收编码的字符串,对其进行解码并切分 2 个第一个字符并将它们用作分隔符。
请注意,使用的 split 函数接受正则表达式作为参数,因此请注意典型的正则表达式字符,如 *。
享受 !