sabing Posted March 29, 2014 Report Share Posted March 29, 2014 Boa tarde pessoal eu estou com uma duvida eu estou querendo pegar uma frase dentro de uma {oieee} exemplo String c ="oieee asdsadasd {pegar essa frase} oieeeasdasd "; System.out.println(c.substring(c.indexOf("{")+1, c.lastIndexOf("}"))); funciona ! mais eu quero fazer esse código funcionar em uma textarea String c =this.textArea1.getText(); System.out.println(c.substring(c.indexOf("{")+1, c.lastIndexOf("}"))); se eu colocar uma linha funciona perfeitamente mais seu adicionar mais de uma linha não funciona exemplo: aqui funciona : programa NomePrograma; variaveis x,i,z:inteiro inicio escreva('Digite o numero: '); leia(x); escreva('Digite o numero: ') leia(i); {oiiee}// pega so essa linha escreva('Resultado: '); fim. não funciona: programa NomePrograma; variaveis x,i,z:inteiro inicio escreva('Digite o numero: '); leia(x); escreva('Digite o numero: ') leia(i); {oiiee} // pega essa linha escreva('Resultado: '); // pega essa linha fim. // pega essa linha {oiiee} // pega essa linha eu quero que pegue essas linhas programa NomePrograma; variaveis x,i,z:inteiro inicio escreva('Digite o numero: '); leia(x); escreva('Digite o numero: ') leia(i); {oiiee} // pega só essa linha escreva('Resultado: '); fim. {oiiee} // pega só essa linha http://www.4shared.com/account/home.jsp#dir=HzMs8hp_ Link to comment Share on other sites More sharing options...
Rui Carlos Posted March 29, 2014 Report Share Posted March 29, 2014 Não estou a ver por que é que isso não funcionar. Mesmo com strings de mais de uma linha, isso funciona. Podes começar por imprimir o texto que obténs da TextArea para ver se não houve nenhuma substituição de caracteres. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
sabing Posted March 29, 2014 Author Report Share Posted March 29, 2014 Então está muito estranho olha como esta sendo imprimido no eclipse, eu estou imprimindo no console http://www.4shared.com/photo/brgGwH9pce/imagem.html Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 29, 2014 Report Share Posted March 29, 2014 este é a maneira correcta de fazer o que pretendes : http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Dreigon Fenriz Posted March 30, 2014 Report Share Posted March 30, 2014 Passe o conteúdo do textarea ,para uma lista,para ficar mais facil,e depois trabalhe linha por linha Link to comment Share on other sites More sharing options...
sabing Posted March 30, 2014 Author Report Share Posted March 30, 2014 O que o meu amigo disse happyhippyhoop funcionou , porem eu não estou conseguindo achar a chave { } eu fiz entre parêntese e funcionou perfeitamente veja o codigo: String c = this.textArea1.getText(); Pattern p = Pattern.compile("\\((.*?)\\)",Pattern.DOTALL); Matcher matcher = p.matcher(c); while(matcher.find()) { System.out.println("Achei:"+matcher.group(1)); } ele percorreu todo o textoArea e mostrou tudo que estava em parêntese mais eu estou querendo dentro de chave não estou conseguindo como fazer essa opção Link to comment Share on other sites More sharing options...
sabing Posted March 30, 2014 Author Report Share Posted March 30, 2014 (edited) Pattern p = Pattern.compile("(\\{(\\w+)\\})+"); Matcher m = p.matcher(this.textArea1.getText()); while (m.find()) { System.out.println(m.group(2)); } consegui porem os espaço não pode influir ! se eu dou espaço entre a chave digito algo ele não acha Edited March 30, 2014 by Baderous geshi Link to comment Share on other sites More sharing options...
Rui Carlos Posted March 30, 2014 Report Share Posted March 30, 2014 Experimenta a expressão regular (\\{([^\\}]+)\\})+. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
sabing Posted March 30, 2014 Author Report Share Posted March 30, 2014 Funcionou perfeitamente ! Tenho outra duvida ! eu estou fazendo um analisador léxico e eu estou quebrando string e comparando, o problema é que o meu identificador está pegando lixo tipo: veja o exemplo programa NomePrograma; // Ele pega NomePrograma : Certo variaveis x,i,z:inteiro // Ele pega x i z : Certo inicio escreva('Digite o numero: '); // Ele pega Digite o numero : Incorreto leia(x); escreva('Digite o numero: ') // Ele pega Digite o numero : Incorreto leia(i); {oiiee} // oiiee: Incorreto escreva('Resultado: '); // Resultado : Incorreto fim. {oiiee} // oiiee: Incorreto Link to comment Share on other sites More sharing options...
Rui Carlos Posted March 30, 2014 Report Share Posted March 30, 2014 Suspeito que devias estar a olhar para uma ferramenta como o ANTLR, em vez de andares com hacks que vão muito provavelmente dar em asneira. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
sabing Posted March 30, 2014 Author Report Share Posted March 30, 2014 Então eu não posso fazer com biblioteca tenho que quebrar string por que é um trabalho Eu armazenei os dados que estão dentro de aspa simples em um array e estou pensando em quebrar a String e depois fazer uma comparação no outro array e deletar, mais não estou conseguindo fazer isso Link to comment Share on other sites More sharing options...
sabing Posted March 30, 2014 Author Report Share Posted March 30, 2014 Eu estou pensando em ler só as palavras declaradas veja programa NomePrograma x,i,z:inteiro String data = this.textArea1.getText(); String regex = "programa"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(data); while (m.find()) { System.out.println(m.group()); } como faço para pegar a proxima palavra ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now