Ir ao conteúdo

Primeira maiuscula numa palavra - Builder C++


jaketa

Posts recomendados

Postado

Ola,

Tem alguma função ou componente no Builder C++ que converta o texto deixando somente a primeira letra de cada palavra em maiusculo??

Postado

Bem... deixando a preguiça de lado, fiz uma funçãozinha que faz essa conversão...

Ela ta bem porca... hahahaha

boolean verifica(AnsiString palavra) {
AnsiString *vet;

vet = new AnsiString[12];
vet[0]="em"; vet[1]="no"; vet[2]="na"; vet[3]="do"; vet[4]="da"; vet[5]="que";
vet[6]="para"; vet[7]="pra"; vet[8]="é"; vet[9]="ou"; vet[10]="e"; vet[11]="de";

for (int i=0;i<12;i++) {
  if (palavra==vet[i]) return false;
}
return true;
}

AnsiString converteMaxMin(AnsiString palavra) {
  AnsiString sub_palavra, final_palavra;
  int tam = palavra.Length();
  AnsiString *b;
  b = new AnsiString[tam];
  char c;
  int i = 1;
  int k = 0;
  boolean bla;
  while (i <= palavra.Length()) {
     c = palavra[i];
     if ((c>=32 && c<=64) || (c>=91 && c<=96) || (c>=123 && c<= 126)) {
        if (sub_palavra!="") {
           b[k] = sub_palavra;
           sub_palavra = "";
           k++;
        }
        b[k] = ("#"+palavra.SubString(i,1));
        k++;
        i++;
        bla = false;
     } else {
        sub_palavra += palavra.SubString(i,1);
        i++;
        bla = true;
     }
  }
  if (bla) {
     b[k] = sub_palavra;
     k++;
  }

  for (int j=0;j<k;j++) {
     sub_palavra = b[j];
     if (sub_palavra.SubString(1,1)=="#") {
        b[j] = sub_palavra.SubString(2,sub_palavra.Length()-1);
     } else {
        sub_palavra = sub_palavra.LowerCase();
        if (verifica(sub_palavra)) {
           AnsiString p_letra = sub_palavra.SubString(1,1);
           AnsiString r_pal = sub_palavra.SubString(2,sub_palavra.Length()-1);
           sub_palavra = p_letra.UpperCase()+r_pal;
           b[j] = sub_palavra;
        } else {
           b[j] = sub_palavra;
        }
     }
  }

  for (int j = 0;j<k;j++) {
     final_palavra += b[j];
  }

  return final_palavra;

}

Primeiro separei as palavras, utilizando como separador tudo que não é letra.

aí foi só transformar as palavras em lowercase e somente a primeira letra em upcase...

Bem... se alguem puder dar uma melhorada nesse codigo aí eu ficaria agradecido...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...