在 android 中使用 StringTokenizer 进行字符串标记化

String tokenization using StringTokenizer in android

我正在尝试将从 json 接收到的字符串格式化为新的格式化。实际的字符串是 [90.36855,23.750088333333334],我的目标是将它转换成两个不同的字符串,例如 90.3685523.750088333333334

我试过下面的方法

String s = "[90.36855,23.750088333333334]";
StringTokenizer st = new StringTokenizer(s, "[");
String lat = st.nextToken();
String lon = st.nextToken();

但是显示FATAL EXCEPTION: main。我该如何解决这个问题?

使用此代码

String s = "[90.36855,23.750088333333334]";
String result = s.replaceAll("[]","");
StringTokenizer st = new StringTokenizer(result, ",");
String lat = st.nextToken();
String lon = st.nextToken();

在此字符串中 [ 只出现一次。所以在这一行 String lon = st.nextToken(); 它会抛出异常,因为 nextToken() 不可用。

由于 StringJSONArray,您可以使用 org.json 来获取纬度和经度。

例如:

String s = "[90.36855,23.750088333333334]";
JSONArray jsonArray = new JSONArray(s);
String lat = jsonArray.get(0);
String lon = jsonArray.get(1);

但如果您不想使用 JSONArray,那么 StringTokenizer 也可以为您解决问题。只需将 regx 更新为 [],:

String s = "[90.36855,23.750088333333334]";
StringTokenizer st = new StringTokenizer(s, "[],");
String lat = st.nextToken();
String lon = st.nextToken();

只需用这个替换你的代码,

    String s = "[90.36855,23.750088333333334]";
    s = s.substring(1, s.length() - 1); //Trim first and last brackets
    StringTokenizer st = new StringTokenizer(s, ","); //pass comma as delimeter
    String lat = st.nextToken();
    String lon = st.nextToken();

试试这个。

String s = "[90.36855,23.750088333333334]";
        StringTokenizer st = new StringTokenizer(s,",");
        String lat = st.nextToken().substring(1);
        String lon = st.nextToken();
        lon = lon.substring(0,lon.length()-1)