얼마전에 비슷한 질문을 해서 많은 분들이 친절하게 대답해주셨는데요..
시간이 얼마 없다보니 다시 질문을 ㅠㅠ;;
아래의 글과 이어지는 내용입니다.
String 변수 중에 2진수로만 되어 있는 변수가 있는데
예를 들자면
0100101010010101010101010101010111110101111111111100000...
이런 식입니다.
제가 하고 싶은 것은 저 숫자들을 하나씩 떼어서 24개씩 5개씩 잘라서 다른 2차원 boolean 배열에 저장하고 싶은데
(boolean 배열 -> boolean[x][y]; 라고 하면 x의 max 크기가 5, y의 max 크기가 24인 배열입니다..
split 나 StringTokenizer 를 사용해서는 구분자로 잘라야 하는데..
어떻게 구분자를 넣어야 할지 난감합니다.
밀쿠우v 님//일단 substring 은 startPos 와 endPos 로 자르는 거 맞구요...
ABCDEF 라는 문자열이 있으면 각 숫자 사이에 Pos(ition) 값이 있다고 생각하시면 됩니다. 그러니까 A 앞에 0 이라는 Postion 값이고, A와 B 사이에는 1, B와 C 사이는 2...F 뒤에는 6이 되겠죠. 그럼 CDE 를 가져오고 싶으면...
String str = "ABCDEF";
String result = str.substring(2, 5);
이렇게 되겠죠.
참고로, 자바나 C, PHP 등 각종 언어에 따라 substring(혹은 substr)은 파라매터가 시작과 끝 혹은 시작과 몇개의 문자...그리고 Position 선정방법 등이 다릅니다. 언어에 따라 공식문서를 보고 확인하셔서 사용하시기 바랍니다.
아 그렇군요!! 감사합니다...
for(int i=0;i<5;i++) { for(int j=0; j<24;j++) { tempRoomState.timeTable[i][j]=Boolean.valueOf(tempRoomTime.substring(i*j, 1*j+1)); } }
tempRoomTime 이 010001 ... 등의 값을 가진 String 변수 입니다.
위와 같이 코딩했는데 그런데 i = 1 까지만 하다가
자꾸 멈추네요;;
char temp[] = string.toCharArray();
for(int x=0;x<5;x++)
{
for(int y=0;y<24;y++)
{
if(temp[y] == 0)
boolean[x][y] = false;
else
boolean[x][y] = true;
}
}
이렇게하면 길이가 120인(24*5) 문자열을 char로(낱개로) 떼어내서
각각의 낱개를 1,0을 보고 true false로 2차원 배열에(boolean[5][24]) 집어넣는 형태가 되죠...
돌려보진 않았습니다;
import java.util.ArrayList; import java.util.List; public class Test { static boolean charToBoolean(char c) { if(c == '0') return false; return true; } /** * @param args */ public static void main(String[] args) { String val = "00000000011111111100000000011100000011111100000000000000111111011100000000111111011100000000000000000"; int unit = 24; int idx = 0; int step = 1; List<String> array = new ArrayList<String>(step); while(unit*step-1 < val.length()) { String temp = val.substring(unit*(step-1),unit*step-1); array.add(temp); step++; } boolean[][] boolArray = new boolean[step][unit]; for(int i = 0 ; i < array.size();i++) { char[] charArray = array.get(i).toCharArray(); for(int j=0;j <charArray.length;j++) { boolArray[i][j] = charToBoolean(charArray[j]); } } } }
split 이나 StringTokenizer 는 문자열을 기준으로 자를 때 사용하구요,
자리수만큼 값을 가져오는건 substring 입니다.