- - PR -
JSPにて文字列中の"http://"の判別について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-17 23:53
文字列中の"http://"から始まる文字列にリンクを張るような
プログラムを作っているのですが、このように変換するプログラムを探しましたが 見つかりません。 自分で実装しようと思ったのですが、どうしてもうまくいきません。 以下が実装したコードです。 //httpアドレスをリンクできるよう変換 String[] haire=new String[50]; StringBuffer sbb=new StringBuffer(); int l=0; int len=naiyou.length()-7; boolean dou=false; String ar=""; try{ BufferedReader br=new BufferedReader(new StringReader(naiyou)); while((ar=br.readLine())!=null){ ar=ar+"e";//eはsubstring用です for(int i=0,j=0,k=0;i<ar.length();i++){ j=ar.indexOf("http://",i); if(j>-1){ while((!ar.substring(j+k,j+k+1).equals(" ")&& !ar.substring(j+k,j+k+1).equals(" "))&& (j+k+1)<ar.length()){ sbb.append(ar.substring(j+k,j+k+1)); k++; } for(int m=0;m<l;m++){ if(sbb.toString().equals(haire[m])){ dou=true; } } if(!dou){ haire[l]=sbb.toString(); l++; } dou=false; sbb=new StringBuffer(); i=j+k-1; } k=0; } } br.close(); }catch(Exception ex){} for(int i=0;i<l;i++){ naiyou=naiyou.replace(haire[i],"<a href=\""+haire[i]+"\">"+haire[i]+"</a>"); naiyou+=i+":"+haire[i];//デバッグ用です } 最後のデバッグ用のコードで配列を全部見るとちゃんと入っていましたが、 replaceメソッドで実装するときにうまくいってないみたいです。 http://w http://ww http://www などとしたときに、全部"http://w"で置換されてしまいます。 他に方法が考えられないのです。 どなたかアドバイス頂けませんか。 ご返答お待ちしてます | ||||||||
|
投稿日時: 2005-10-18 01:00
この場合にして欲しい処理は最長一致検索でしょうから、検索文字列を長い順でソートしてから順に置換して……とやっても、この場合は置換後の文字列に再度マッチしてしまってうまくいかないと思います。 String.replace() にまかせないで、
を繰り返すのでどうでしょう。 または、もしかして
あたりで済む処理だったりしませんか? | ||||||||
|
投稿日時: 2005-10-18 17:50
スフレさんご返答ありがとうございます。
その一行でうまくいきました。 ありがとうございました。 |
1