• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Little_star

Problemas com programa pa formatar strings em java

3 mensagens neste tópico

ola malta, eu tenho um programa que tem de formatar uma string inserida pelo utilizador, tenho de por as 1º letra de cada palavra em maiúscula e retirar os espaços a mais. O meu problema é que o código que eu fiz ta a retirar as 2 primeiras letras da palavra  ... será  que me podiam ajudar??

public class strings2{
public static void main(String[] args)
{
	Scanner kiby= new Scanner(System.in);
	System.out.println("Escreva uma frase");
	String s=kiby.nextLine();

	strings2.format(s);
	System.out.println("A Frase formatada fica assim: \n"+strings2.format(s));
}
public static String format(String s)
{
	String s2=s.toLowerCase();
	char letraM=0;
	String line="";
	String line2="";
	String j=" ";
	for(int i=1;i<s2.length();++i)
	{	if(s2.charAt(i-1)==' '&& s2.charAt(i)!=' ')//poem todas as letras a seguir aos espaços em maiusculas
		{
			letraM=s2.charAt(i);
			line =  line + (char) (letraM - ('a' - 'A'));
			System.out.println(line);
		}
		else
		{ 
				letraM=s2.charAt(i);
				line+=letraM;
		}
	}

	for(int i=1;i<line.length();i++)//retira o espaços a mais da frase
	{
		while(line.charAt(i)==' ')//passa as letras para dentro da nova string
		{	line2+=line.charAt(i);

			if (i==line.length()-1)//se o i chegar a zero para
				break;
			i++;
		}
		if(line.charAt(i-1)!=' ')
			i++;


		else
		line2+=j;

	}
	return line2;
}
}

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que são "espaços a mais"? São os espaços no início e no fim da string? Ou também contam os espaços a mais no meio da string?

Se for o 2º caso podes usar uma combinação das funções trim() e replaceAll(). A primeira elimina todos os espaços no início e no fim da string. A 2ª, quando usada com uma expressão regular que faça match com 2 ou mais espaços seguidos (ou com tabs ou newlines), pode substituí-los por apenas 1 espaço.

String str = "   espacos     e cenas   ";
str = str.trim().replaceAll("[\t\n ]{2,}"," ");

Isto vai originar a string: "espacos e cenas".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado Baderous, era mesmo isso. Ficou a funcionar lindamente e fiquei com o código bem mais reduzido. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora