I have a String:
String received = "28,gZrate:-1.48},
{gXrate:9.10,gYrate:-0.69,gZrate:-1.50},
{gXrate:9.22,gYrate:0.54,gZrate:-1.67},
{gXrate:9.20,gYrate:-2.40,gZrate:-1.65},{gXrate:9.02" ;
I need this string to be in an array like this:
["gXrate:9.10,gYrate:-0.69,gZrate:-1.50","gXrate:9.22,gYrate:0.54,gZrate:-1.67","gXrate:9.20,gYrate:-2.40,gZrate:-1.65"]
neglecting the broken part of received string at the beginning and end i.e.
28,gZrate:-1.48}
{gXrate:9.02 ;
also to note at times string may not be broken.
String received = "28,gZrate:-1.48},{gXrate:9.10,gYrate:-0.69,gZrate:-1.50},";
received += "{gXrate:9.22,gYrate:0.54,gZrate:-1.67},";
received += "{gXrate:9.20,gYrate:-2.40,gZrate:-1.65},{gXrate:9.02";
String pattern = "\\{(.*?)\\},?";
StringBuilder sb = new StringBuilder("[");
boolean first = true;
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(received);
while (m.find()) {
if (!first) {
sb.append(",");
}
first = false;
sb.append("\"" + m.group(1) + "\"");
}
sb.append("]");
System.out.println(sb);
Output:
["gXrate:9.10,gYrate:-0.69,gZrate:-1.50","gXrate:9.22,gYrate:0.54,gZrate:-1.67","gXrate:9.20,gYrate:-2.40,gZrate:-1.65"]
Here is a demo which shows that the above code works for both the broken and balanced cases:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With