2013-06-17 2 views
0

안드로이드의 부분 문자열과 혼동을 느낍니다. 내 데이터베이스 에서이 DOGMATIKA - 3.pdf 파일 PDF 파일이 있고 "pdf"를 선택하고 싶습니다. 안드로이드에서 할거야? 나는 단지 3 개의 마지막 글자를 고르고 싶다. 아무도 도와주지 말아라, 고마워. 이미이 코드로 시도했지만 강제로 닫습니다.은 안드로이드의 부분 문자열과 혼동합니다.

package mobile.download; 

public class DownloadText extends Activity{ 
    public Koneksi linkurl; 
    public Kondownload linkurl2; 
    String url; 
    String SERVER_URL; 
    String SERVER_URL2; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.linkdownload); 

     TextView mTextLink = (TextView) findViewById(R.id.LinkDownload); 
     Bundle bundle = this.getIntent().getExtras(); 

     String param1 = bundle.getString("keyIdc"); 
     String param2 = bundle.getString("keyReference"); 
     if(param2.substring(-3, 0).equals("pdf")) 
     { 
      linkurl = new Koneksi(this); 
      SERVER_URL = linkurl.getUrl(); 
      SERVER_URL += "/moodledata/"+param1+"/"+param2; 
      mTextLink.setText(SERVER_URL); 
      Pattern pattern = Pattern.compile(SERVER_URL); 

      Linkify.addLinks(mTextLink, pattern, ""); 
     } 
     else 
     { 
      linkurl2 = new Kondownload(param2); 
      SERVER_URL2 = linkurl2.getUrl(); 

      mTextLink.setText(SERVER_URL2); 
      Pattern pattern = Pattern.compile(SERVER_URL2); 

      Linkify.addLinks(mTextLink, pattern, ""); 
     } 

    } 
} 
+0

처럼 사용 .. – smk

+0

@smk IndexOutOfBoundsException가 – Blackbelt

+0

읽기 문서 : http://docs.oracle.com/javase/6/docs/api/java/lang /String.html#substring%28int,%20int%29. 설명이 바로 있습니다. 첫 번째 매개 변수는 음수 일 수 없습니다. – BLaZuRE

답변

1

지난 3 글자 length() - 3length()에 (두 번째 매개 변수는 묵시적으로 길이(), 그래서 필요가 없습니다) 당신은 명확하다 endsWith를 사용할 수 있습니다, 그러나

param2.substring(params2.length() - 3) 

:

param2.endsWith("pdf") 

정확히 일치합니다.

+0

njzk2, 고맙습니다. 당신의 도움을 위해 대단히. D. 나는 두 번째와 성공을 사용한다 !!! – blackneko

0

나는이 DOGMATIKA-3.pdf 같은 파일 PDF 파일을 가지고 있고 나는 "PDF"

String test = "myPdf.pdf"; 
String extension = test.substring(test.lastIndexOf(".")+1, test.length()); 

을 선택합니다 또는 당신은 다만 할 수 있습니다

String extension = test.substring(test.lastIndexOf(".")+1); 
+0

@downvoter 내가 놓친 게 있니? –

+1

귀하의 답변에 아무 것도 없습니다. 나는 downvoter를 부정하기 위해 upvote 할 것이다! – JorganPubshire

0

시도 param2.substring(param2.indexOf("."), param2.length()).equals("pdf") 대신.

+1

항상 false를 반환합니다. 그리고 만약 당신이 \t'문자열 param2 = "file.name.pdf";'이 작동하지 않습니다. –

0

.substring()을 사용하려는 경우 string.substring(string.length()-3).

그러나, 당신은 또한 지금처럼 .split() 메소드를 사용할 수 있습니다

String [] split = string.split("."); 

이것은 모든 경우를 제외한 새로운 배열을 만들 것입니다 "." 배열 분리 기호로 사용합니다. 당신이 당신의 위의 문자열에이 .split()를 호출 경우에, 당신은 얻을 것

{ "DOGMATIKA-3", "PDF"} 후자의 방법이 아닌 파일 확장자에 대한

작동합니다 3 자.

0

그냥 오류가 무슨

String substr = param2.substring(param2.length() - 3); 
     if("pdf".equals(substr)) 
    { 
     // use what you want 
    }