문제

고정 된 길이 덩어리로 파손되고 ArrayList에 추가 된 문자열을 얻을 수 없습니다. 아래의 코드는 예상대로 반복됩니다. 그러나 마지막 하나가 null입니다.마지막으로 실제로 가치가 있습니다.

편집 텍스트가 반환 된 "01234567890" "", "및"890 "을 반환 한 경우 아래의 예에서.

Pattern p = Pattern.compile(".{4}");
ArrayList<String> myText = new ArrayList<String>();
String[] messageToSplit = TextUtils.split(myStringEditText.getText().toString(), p);
int x = 0;
while(x  <= (myStringEditText.getText().toString().length() / 4)) {
  Toast.makeText(getBaseContext(), x+": '" + messageToSplit[x] + "'", Toast.LENGTH_SHORT).show();
  myText.add(messageToSplit[x]);
  x++;
}
.

도움이 되었습니까?

해결책

In a split operation, the regex pattern is the separator. For example, if the regex pattern were ;, then 12;34;56 would be split into 12, 34, and 56.

So in your case 01234567890 is split into "" (the string before 0123), "" (the string between 0123 and 4567) and 890 (the remainder of the string after 4567).

You probably don't want to use split but rather something like this:

Pattern p = Pattern.compile(".{1,4}");
Matcher regexMatcher = p.matcher(messageToSplit);
while (regexMatcher.find()) {
    myText.add(regexMatcher.group());
} 

.{1,4} will match 4 characters if it can, but make do with 1-3 if four are no longer available (which might happen at the end of the string if its length is not a multiple of 4).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top