2013-08-20 2 views
1

알 수 없음 txt 파일의 특정 줄에있는 하위 문자열 (16 진수)을 변수에 어떻게 할당합니까?특정 줄의 번호를 변수에 할당

필자는 필요한 줄을 식별하는 코드를 작성했으며 정규 표현식 (정규식)을 사용해야한다고 들었습니다.

어떻게 해야할지 모르겠다. 그것은 정규식없이 할 수 있습니까?

이것은 예제 txt 파일에서 발췌 한 것입니다. 내가 도착 (다음 (2) 및 값 (3)값 비교)하지만 내가 처음 16 진수 숫자 필요 찾고 있어요.

Default(2) = 0x00 
Value(2) = 0xE0A64F36 
Desc(2) = calculated from application 
Address(2) = 0x60 
Page(2) = Sensor 
Name(3) = ROM CRC32 
Type(3) = u32 
Default(3) = 0x00 
Value(3) = 0xE0A64F36 
Desc(3) = fix CRC from ROM 
+2

'Java'태그가 지정되어있을 때 [Java]를 쓸 필요가 없습니다. – Maroun

+0

왜 '알 수 없음'을 강조합니까? –

+0

이 코드는이 레이아웃으로 여러 파일을 여는 데 사용됩니다. 각 파일을 살펴보고 코드의 번호와 위치를 확인해야합니다. –

답변

3

=으로 분할하고 16 진수를 구문 분석하십시오. 정규 표현식을 사용하지 않으려면

String s = "Value(2) = 0xE0A64F36"; 
String hex = s.split("=")[1].trim(); 
long l = Long.parseLong(hex.substring(2), 16); 
// l == 3768995638 
+0

죄송합니다. 이 답변을 살펴 보려면 시간이 좀 걸렸습니다. –

1

당신은 이런 식으로 추출 할 수 있습니다

Pattern p = Pattern.compile("Value\\([23]\\) = (0x([0-9A-F]{8}))"); 
Matcher m = p.matcher(s); 
while (m.find()) { 
    System.out.println(m.group(1)); 
    System.out.println(Long.parseLong(m.group(2), 16)); 
} 

공지 사항 : 당신은 단지 테스트하려는 경우 경우 값 (2)과 가치 (3) 동일합니다, 당신은 아무것도를 변환 할 필요가없는 . 문자열 만 비교할 수 있습니다.

1

, 당신은 ("="다음에 문자열) 라인의 값 부분을 받고 있는지 여부를 확인하는 등, 자신에 의해 HEX 패턴으로 문자열을 구문 분석해야 이 부분은 HEX 형식 (0x로 시작하고 뒤에 오는 문자는 0-F)이거나 Integer.parseInt (String s, int radix)를 사용하여 구문 분석하려고 시도합니다 (예외 잡기)

1

문자열이 있다고 가정하면 이미

String value2 = "Value(2) = 0xE0A64F36"; 
String value3 = "Value(3) = 0xE0A64F36"; 

추출하고이 두 변수에 저장됩니다 당신은 우리를 수 e 부분 문자열 및 indexOf를 사용하여 실제 값을 얻습니다.

value2 = value2.substring(value2.indexOf("0x")); 
value3 = value3.substring(value3.indexOf("0x")); 
if (value2.compareToIgnoreCase(value3) == 0) { 
    // Do something here 
}