我有一个字符串,它是一个坐标列表,如下所示:
st = "((1,2),(2,3),(3,4),(4,5),(2,3))"
我希望将其转换为坐标数组
a[0] = 1,2
a[1] = 2,3
a[2] = 3,4
....
等等。
我可以用Python做到,但我想用Java做。 那么如何将字符串拆分为java ??
中的数组答案 0 :(得分:6)
使用正则表达式可以很容易地完成,捕获let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let date = dateFormatter.date(from: "2017-03-14") {
dateFormatter.dateFormat = "EEEE, MMMM dd, yyyy"
let string = dateFormatter.string(from: date) // "Tuesday, March 14, 2017"
}
并循环匹配
(\d+,\d+)
如果你真的需要一个数组,可以转换
String st = "((1,2),(2,3),(3,4),(4,5),(2,3))";
Pattern p = Pattern.compile("\\((\\d+),(\\d+)\\)");
Matcher m = p.matcher(st);
List<String> matches = new ArrayList<>();
while (m.find()) {
matches.add(m.group(1) + "," + m.group(2));
}
System.out.println(matches);
答案 1 :(得分:0)
替代解决方案:
String str="((1,2),(2,3),(3,4),(4,5),(2,3))";
ArrayList<String> arry=new ArrayList<String>();
for (int x=0; x<=str.length()-1;x++)
{
if (str.charAt(x)!='(' && str.charAt(x)!=')' && str.charAt(x)!=',')
{
arry.add(str.substring(x, x+3));
x=x+2;
}
}
for (String valInArry: arry)
{
System.out.println(valInArry);
}
如果您不想使用Pattern-Matcher;
答案 2 :(得分:0)
应该是这样:
String st = "((1,2),(2,3),(3,4),(4,5),(2,3))";
String[] array = st.substring(2, st.length() - 2).split("\\),\\(");