我试图将日期(例如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;
}
答案 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()
中?