Java拆分无法正常工作

时间:2014-09-08 16:41:11

标签: java android

我试图将日期(例如28.08)分成两部分:28和08由"。"

private String szukajDnia(String data){
      String[] dni = {"poniedziałek","wtorek","środa","czwartek","piątek","sobota","niedziela"};
      String dataZseparatorem = "";

      for(int i = 0; i < dni.length; i++){
            if(data.startsWith(dni[i]) == true){
                    dataZseparatorem = data.substring(dni[i].length());
            }
      }

      String dzien[] = dataZseparatorem.split("\\.");
      // dzien[0] - day
      // dzien[1] - month

      return dzien[0];
 }

private String szukajMiesiaca(String data){

          String[] dni = {"poniedziałek","wtorek","środa","czwartek","piątek","sobota","niedziela"};
            String dataZseparatorem = "";

           for(int i = 0; i < dni.length; i++){
            if(data.startsWith(dni[i]) == true){
                    dataZseparatorem = data.substring(dni[i].length());
                }
            }

            String dzien[] = dataZseparatorem.split("\\.");
            // dzien[0] - dzien
            // dzien[1] - miesiac

            return dzien[1];
        }

只有当我得到dzien [0]时它才有用,但是当我尝试得到dzien [1](月)时,我有错误Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

输入例如: poniedzalek28.08 正确输出 08或28,当我想要一天

 public List<String> handleResponse(HttpResponse response)
                throws ClientProtocolException, IOException {
            List<String> result = new ArrayList<String>();
            String JSONResponse = new BasicResponseHandler()
                    .handleResponse(response);
      try {

                // Get top-level JSON Object - a Map
                JSONObject responseObject = (JSONObject) new JSONTokener(
                        JSONResponse).nextValue();

                JSONObject resultsObject = responseObject.getJSONObject("results");

                // / wchodzimy do arraya List
                JSONArray collectionArray = resultsObject.getJSONArray("collection1");

                File file = new File(Environment.getExternalStorageDirectory()+ "/" + plan);
                writer = new PrintWriter(Environment.getExternalStorageDirectory()+ "/" + plan);


                for (int i = 0; i < collectionArray.length(); i++) {
                    JSONObject listObject = (JSONObject) collectionArray.get(i);

                    String DzienData = listObject.getString("property1");
                    String Godzina= listObject.getString("property2");
                    String Rodzaj = listObject.getString("property5");
                    String Program = listObject.getString("property7");
                    String Uwagi = listObject.getString("property8");

                    result.add(""+DzienData+"\n"+Godzina+"\n"+Rodzaj+"\n"+Program+"\n"+Uwagi);

                    listaDni.add(szukajDnia(DzienData)); // it work's ( dzien[0])
                    listaMiesiecy.add(szukajMiesiaca(DzienData)); // it isn't work's (dzien[1])
                    lokacja.add(Uwagi);
                    opis.add(Program);

                }
                writer.close();

            } catch (JSONException e) {
                e.printStackTrace();
            }
            return result;
        }

3 个答案:

答案 0 :(得分:0)

如果您想使用.拆分字符串,则必须使用\\.

String dzien[] = dataZseparatorem.split("\\.");

答案 1 :(得分:0)

我刚试过这段代码,它按预期工作:

 String data = "poniedziałek28.08";
 String[] dni = {"poniedziałek","wtorek","środa","czwartek","piątek","sobota","niedziela"};
 String dataZseparatorem = "";

for(int i = 0; i < dni.length; i++){
 if(data.startsWith(dni[i]) == true){
         dataZseparatorem = data.substring(dni[i].length());
     }
 }
System.out.println(dataZseparatorem);
 String dzien[] = dataZseparatorem.split(Pattern.quote("."));

 System.out.println(dzien[0] + " " + dzien[1]);

请检查您的输入,看看是否是UTF-8(带有所有突出的字符)。

答案 2 :(得分:0)

我尝试和@prabugp一样,但他的速度更快。是的,您的代码按设计工作。

尽管如此,让我提示良好的编码习惯

当您声明一个数组时,您可以使用语法String dzien[]而不是String[] dzien,但Oracle本身不鼓励它们,并且他们也给出了解释,请参阅本网站引用的以下段落:{{ 3}}

  

您也可以将括号放在数组的名称后面:

     

//不建议使用此表单   float anArrayOfFloats [];

     

但是,公约不鼓励这种形式;括号标识出   数组类型,应该出现类型名称。

当然,这对您的问题没有任何帮助,但如果向我们展示所使用的具体数据,我们可以进一步提供帮助。

修改 - 添加

例如,我们不知道这个对象是什么以及该方法到底做了什么:

listaMiesiecy.add(...)

它似乎是像ArrayList这样的List类型,但是您的信息并没有明确强调这一点。也许这可能是一个自编的类,错误发生在它的方法add()中?