2012-05-12 4 views
1

objective-c에서 java로 일부 코드를 이동 중입니다. 이 프로젝트는 XML/HTML 파서입니다. 객관적인 C에서 나는 scanUpToString ("mystring")만을 사용합니다. 방법.자바의 NSScanner에 가장 가까운 것

자바 스캐너 클래스를 살펴 보았지만 모든 것을 토큰으로 분해합니다. 나는 그것을 원하지 않는다. 난 단지 하위 문자열의 발생까지 스캔하고 전체 문자열에서 스캐너의 현재 위치를 추적 할 수 있기를 원합니다.

도움을 주시면 감사하겠습니다.

편집

더 구체적으로. 스캐너가 토큰 화되기를 원하지 않습니다.

String test = "<title balh> blah <title> blah>"; 
    Scanner feedScanner = new Scanner(test); 
    String title = "<title"; 
    String a = feedScanner.next(title); 
    String b = feedScanner.next(title); 

위의 코드에서 나는 feedScanner.next (title); "<title"

실제로 발생하는 것은 기본 구분 기호가 공백이기 때문에 feeScanner.next가 처음 작동하기 때문에 실제로 발생합니다. 그러나 두 번째 호출은 실패합니다 (my 목적).

+2

당신은'Scanner' 당신이 할 두지 않을 된 사항에 대한보다 구체적인 될 수 있을까? 'Scanner'가 과도하게 사용되고 ['String # indexOf'] (http://docs.oracle.com/javase/7/docs/api/java/lang/String .html # indexOf % 28java.lang.String, % 20int % 29). – trutheality

답변

0

이 정말 methodsdirectly String 년대를 사용하여 쉽게 :

String test = "<title balh> blah <title> blah>"; 
String target = "<title"; 
int index = 0; 
index = test.indexOf(target, index) + target.length(); 
// Index is now 6 (the space b/w "<title" and "blah" 
index = test.indexOf(target, index) + target.length(); 
// Index is now at the ">" in "<title> blah" 

는 당신이 실제로 이외의 문자열을 걸어 수행하려는 작업에 따라 서로 다른 접근 방식은 더/더 좋을 수 있습니다. 예 : 당신의 <title 년대 사이의 blah> blah 문자열을 얻을하려는 경우 Scanner 편리입니다 :

String test = "<title balh> blah <title> blah>"; 
Scanner scan = new Scanner(test); 
scan.useDelimiter("<title"); 
String stuff = scan.next(); // gets " blah> blah "; 
0

어쩌면 String.split이 당신에게 적합한가요?

s = "The almighty String is mystring is your String is our mystring-object - isn't it?"; 
parts = s.split ("mystring"); 

결과 :

Array("The almighty String is ", " is your String is our ", -object - isn't it?) 

당신은 "mystring에"사이에 있어야합니다 것을 알고있다. 시작과 끝이 확실하지 않으므로 s.startsWith ("mystring")/s.endsWith이 필요합니다.

1

이 작업은 String 클래스 (Java.lang.String)를 사용하여 수행 할 수 있습니다.

  1. 먼저 하위 문자열의 첫 번째 색인을 가져옵니다.

    int first_occurence = string.indexOf (substring);

  2. 그런 다음 전체 문자열을 반복하고 문자열

    INT next_index = 같이 IndexOf (STR, fromIndex의)의 다음 값을 얻을;

  3. 값을 저장하려면 래퍼 클래스에 추가하고 arraylist 개체에 추가하십시오.