속성의 깊이를 결정하는 선행 공백의 수와 함께 계층 적 텍스트 파일을 구문 분석하고 각 수준에 대해 Java 개체 세트를 반환해야합니다. 나는 스캐너를 사용하거나 개별적으로 각 라인을 읽는 것에 대해 생각했지만 그것은 성가신 것처럼 보였다. 아마도 정규 표현식이 더 나은 해결책일까요? 내가 좋아하는 외모를 읽을 필요 파일 :각 필드의 앞에 공백이있는 계층 적 텍스트 파일 읽기
workarea = workarea:
size = (1583, 805, 0)
areas = areas:
place = array: 2 items
0 = int: 0
1 = int: 0
size = (1583, 805, 0)
areas = array: 2 items
0 = object:
type = myType:
prop1 = prop1
prop2 = array: 2 items
0 = object:
prop1 = prop1
prop2 = prop2
1 = object:
prop1 = prop1
prop2 = prop2
position = (5, 5, 0)
size = (735, 226, 0)
1 = object:
type = myType2:
prop1 = prop1
prop2 = array: 2 items
0 = object:
prop1 = prop1
prop2 = prop2
1 = object:
prop1 = prop1
prop2 = prop2
prop3 = prop3
position = (5, 5, 0)
size = (735, 226, 0)
당신이 거기에 정의 된 "영역"개체는 다음 특정 유형의 "객체"(myType1 및 myType2)와 5 선 아래 채워진 볼 수 있듯이. 이러한 하위 객체의 각각은 (예에서 myType2이 prop3을 가지고 다른 객체의 배열을 포함 할 수있다.), 서로 다른 특성을 가지고
자바 객체의 그룹으로이 구조를 얻을 수있는 가장 좋은 방법이 될 것입니다 무엇 : 예
Workarea
public String size = "1583,805"
public List<Areas> = (
{Area
public String type = "myType"
Public String prop1 = prop1
etc....
},
{Area
public String type = "myType2"
Public String prop1 = prop1
etc....
}
)
을
외부 구문 분석 라이브러리를 사용할 여력이 있습니까? – fge
외부에서 당신은 비 자바를 의미합니까? 그렇다면 아니오. 하지만 자바라면 아무런 문제가 없습니다. 너 마음에 무엇이 있었 니? –
자바입니다. 제가 생각한 것은 [Parboiled] (https://github.com/sirthias/parboiled/wiki)였습니다. 문법은 Java로 작성되었으며 필요에 따라 다른 객체를 생성하기 위해 빌더를 밀거나 팝하는 데 사용할 수있는 스택이 있습니다 – fge