JSP String - substring

Olá a todos… Muito boa tarde…

Pessoal estou com um pequeno problema e dúvida aqui.
Tenho o nome de imagens gravado num db e preciso pegar o nome e extensão das mesmas, pois quando é feito o upload de imagens ele mantem a imagem e cria uma thumb. Portanto, na hora que exibe as fotos não quero carregar as fotos 640x480 com width=120 e height=90, quero usar as thumbs.

Lembrando que o nome do arquivo pode ser qualquer um, obvio desde que tenha extensão .jpg, .JPG, .png, .gif Vejam o exemplo.

DSC00001.JPG
DSC00002.jpg
TestedeFotoComPHP.gif
gujForum.png

Em PHP eu consigo independentemente do tamanho de caracteres do nome do arquivo pegar apenas o “.JPG, .jpg, .gif e .png”.
o código pra isso é assim.

$idFileThumb = substr($escrever['file'],0, -4)."_thumb".substr($escrever['file'],-4);

Ele vai me retornar as thumbs de cada imagem. DSC00001_thumb.JPG

Ja tentei fazer isso de todos os jeitos usando o substring, mais foram tentativas frustradas!

O que vocês me aconselham a fazer?

Aguardo feedback.

Posta o código ai, pra gente dá uma olhada.

Code em PHP

$idFileThumb = substr($escrever['file'],0, -4)."_thumb".substr($escrever['file'],-4);

Esse código acima faz o seguinte.
Extrai do campo FILE de uma table "nome do arquivo - a extensão + _thumb + extrai os últimos 4 caracteres (.jpg)
|DSC00001|_thumb|.JPG|

Em JSP não consigo fazer isso com o substring, pois ele não aceita, por exemplo, condição negativa (-4 como no PHP).

out.print("<a href='../../sisnews/genephotos/uploads/"+rsDB.getString("FILE")+"' border='0' rel='example4' title='"+rsDB.getString("CAPTION")+"'>"); out.print("<img src='../../sisnews/genephotos/uploads/"+rsDB.getString("FILE")+"' border='0' width='125' height='95' class='imgCapa2' title='"+rsDB.getString("CAPTION")+"' /></a>");

Conseguiu entender?

O que devo fazer pra ter o mesmo resultado em java.

Agradeço desde já.

Você está usando scriptlet??

Ao invés de:

rsDB.getString("FILE")

Use

rsDB.getString("FILE").substring(0, (rsDB.getString("FILE").length() - 4) + "_thumb"

kra, tenta usar, no lugar de -4, a funcao lenght() e subtrai dela 4, tipo assim:

String teste = "Teste substring";
String nome = teste.subString(0, teste.length() - 4);

Ou então pega o index do ponto e faz um substring… Olha:

public class SeparaExtensao{
	public static void main(String args[]){
		String arquivo = "algum_arquivo.ext";
		String extensao = arquivo.substring(arquivo.lastIndexOf(".")+1);
		
		System.out.println(extensao);
		
	}
}

Cara,

Esquece scriptlet. JSTL é melhor, mais fácil e mais adequado:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri= "http://java.sun.com/jsp/jstl/functions" prefix= "fn"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>        
        <title>Testando substring...</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>

    <body>

        <c:set var="imagem" value="foto.jpg" />
        <c:out value="${fn:substringBefore(imagem, '.')}_thumb.${fn:substringAfter(imagem, '.')}" />
        <!-- Saida: foto_thumb.jpg -->

    </body>
</html>

[]s

Valeuuuuuu galeraaaaaaa

Deu certinho aqui, usei LastIndexOf.

Muito obrigado mesmo!

Grande abraço a todos