• Nenhum resultado encontrado

5. Modificar a Caixa de todos os Caracteres em uma String

N/A
N/A
Protected

Academic year: 2021

Share "5. Modificar a Caixa de todos os Caracteres em uma String"

Copied!
7
0
0

Texto

(1)

www.devmedia.com.br [versão para impressão]

Soluções rápidas no trabalho com char e string (VB e C#

(csharp)) – Parte II

KALLEBE LINS

Dese nvo lve do r .NET, MC TS W eb, MC TS Distribute d, Té cnico e m Siste m a s

Inte grado s de Gestão Em pre saria l. Atua lm ente tra balha co m o pro gram ado r .NET (VB e C #), dese nvolve ndo sistem as para W e b com a te cnolo gia W e b Service .

Soluções rápidas no trabalho com char e string (VB e C#) – Parte II

4. Criar uma String Consistindo de um Caractere Repetido

Problema:

Você necessita rapidamente criar uma string que consiste de um simples caractere repetido em vários tempos (ex.: "---").

Solução:

' vb

Dim hifen As New String("-"c, 50) Response.Write(hifen)

// c#

String hifen = new String('-', 50);

Response.Write(hifen);

Saída:

---

5. Modificar a Caixa de todos os Caracteres em uma

String

Problema:

Você deseja em caixa alta ou baixa todas às letras em uma string.

Solução:

Os métodos ToUpper() e ToLower() (c# e vb) fazem facilmente a conversão de strings para caixa alta ou baixa, ou ainda mescla esta conversão (vb). Podemos também utilizar, como padrão no VB, os métodos UCase() e LCase(). Para mesclar as caixas utilize a função StrConv() do VB.

' vb

Dim Texto, CaixaMista, CaixaAlta, CaixaBaixa As String Texto = "Visual Studio"

CaixaAlta = Texto.ToUpper()

(2)

' ToUpper() retorna "VISUAL STUDIO"

CaixaBaixa = CaixaAlta.ToLower() ' ToLower() retorna "visual studio"

CaixaAlta = UCase(Texto)

' UCase() retorna "VISUAL STUDIO"

CaixaBaixa = LCase(CaixaAlta) ' LCase() retorna "visual studio"

CaixaMista = StrConv(CaixaBaixa, VbStrConv.ProperCase) ' StrConv(str, ProperCase) retorna "Visual Studio"

// c#

String MixedCase, UpperCase, LowerCase;

MixedCase = "Visual Studio";

UpperCase = MixedCase.ToUpper();

// UpperCase é agora "VISUAL STUDIO"

LowerCase = MixedCase.ToLower();

// LowerCase é agora "visual studio"

6. Desempenhar Case-Insensitive em Comparações de String

Problema:

Você necessita comparar duas strings para ver se elas associam até mesmo o tipo de caixa (alta ou baixa) (case-sensitive).

Solução:

Use a versão de sobrecarga do método estático String.Compare que aceita um parâmetro Boolean para ignoreCase.

Retorna 0 (zero) se as strings são iguais, -1 se a primeira string for menor que a segunda (StringA <

StringB), ou 1 se a primeira string for maior que a segunda (StringA > StringB). Opcionalmente, o método também aceita um parâmetro booleano chamado ignoreCase que desempenha comparações case-sensitive.

' vb

If String.Compare(StringA, StringB, True) = 0 Then ' Strings associadas.

End If

// c#

if (String.Compare(StringA, StringB, True) = 0) {

// Strings associadas.

} Ou ainda:

' vb

If StringA.ToUpper() = StringB.ToUpper() Then ' Strings associadas.

End If

// c#

if (StringA.ToUpper() = StringB.ToUpper()) {

(3)

// Strings associadas.

}

7. Interagir com Todos os Caracteres em uma String

Problema:

Você deseja examinar cada caractere em uma string individualmente.

Solução:

' vb

Dim MyString As String = "Iteragindo com caracteres"

Dim i As Integer

For i = 0 To MyString.Length - 1

Response.Write("Caractere: " & MyString.Chars(i) & "<br />") Next

// c#

String MyString = "Iteragindo com caracteres";

Char[] caractere = MyString.ToCharArray();

for (int i = 0; i < (MyString.Length - 1); i++) {

Response.Write("Caractere: " + caractere[i] + "<br />");

} Ou ainda:

' vb

Dim MyString As String = "Iteragindo com caracteres"

Dim Letter As Char

For Each Letter In MyString

Response.Write("Caractere: " & Letter & "<br />") Next

// c#

String MyString = "Iteragindo com caracteres";

foreach (Char Letter in MyString) {

Response.Write("Caractere: " + Letter + "<br />");

}

Saída:

Caractere: I Caractere: t Caractere: e Caractere: r Caractere: a Caractere: g Caractere: i Caractere: n Caractere: d Caractere: o Caractere:

Caractere: c Caractere: o Caractere: m Caractere:

Caractere: c Caractere: a

(4)

Caractere: r Caractere: a Caractere: c Caractere: t Caractere: e Caractere: r Caractere: e Caractere: s

Você pode verificar também o tipo do caractere, a saber:

IsDigit: número de 0–9.

IsNumber: número hexadecimal de 0–F.

IsLetter: letra A–Z.

IsLetterOrDigit: caracteres alfa-numéricos de A–Z ou 0–9.

IsLower e IsUpper: depende do caso do caractere.

IsPunctuation: caractere que é classificado como uma pontuação Unicode.

IsSymbol: caractere que é classificado como um símbolo Unicode.

IsWhiteSpace: caractere classificado como um espaço-branco em Unicode (tipicamente um espaço, tab, quebra de linha, etc.).

Sendo assim:

' vb

Dim MyString As String = "Iteragindo com caracteres"

Dim Letter As Char

For Each Letter In MyString Response.Write(Letter)

If (Char.IsWhiteSpace(Letter)) Then Response.Write("<br />") Next

// c#

String MyString = "Iteragindo com caracteres";

foreach(Char Letter in MyString) {

Response.Write(Letter);

if (Char.IsWhiteSpace(Letter)) Response.Write("<br />");

}

Saída:

Iteragindo com caracteres

8. Analisar uma Palavra dentro de uma Frase

Problema:

Você deseja analizar uma string e recuperar uma lista de todas as palavras que contém.

Solução:

Usar o método Split que aceita um delimitador de caracteres. O método quebra a string cada vez que esse delimitador for encontrado.

' vb

Dim sentenca As String = "Sobremesa preparada com banana ou outra fruta."

Dim separador() As Char = {" "}

Dim palavras() As String ' Quebra a sentenca.

(5)

palavras = sentenca.Split(separador)

' Mostra a sentenca dividida.

Dim palavra As String For Each palavra In palavras

Response.Write("Palavra: " & palavra & "<br />") Next

// c#

String sentenca= "Sobremesa preparada com banana ou outra fruta.";

Char[] separador = new Char['\0'];

String[] palavras;

// Quebra a sentenca.

palavras = sentenca.Split(separador);

// Mostra a sentenca dividida.

foreach (String palavra in palavras) {

Response.Write("Palavra: " + palavra + "<br />");

}

Saída:

Palavra: Sobremesa Palavra: preparada Palavra: com Palavra: banana Palavra: ou Palavra: outra Palavra: fruta.

Ocorre um problema quando você tenta quebrar a string com vários tipos de pontuações (semelhantes como (.) ponto, (,) vírgula, ...) que são usualmente seguidos de espaços em branco. O método Split retorna, neste caso, uma string vazia. Dessa forma, você pode implementar um método que retira os espaços retornados:

' vb

Private Function OtimizarQuebra(ByVal stringToSplit As String, _ ByVal delimitador() As Char) As String()

' Quebra uma lista de palavras dentro do array.

Dim Palavras() As String

Palavras = stringToSplit.Split(delimitador)

' Adiciona cada palavra valida no ArrayList.

Dim PalavrasFiltradas As New ArrayList() Dim Palavra As String

For Each Palavra In Palavras

' A string não pode ser vazia, neste caso um espaço.

If Palavra <> String.Empty Then PalavrasFiltradas.Add(Palavra) End If

Next

' Converte o ArrayList para um array de String.

Return CType(PalavrasFiltradas.ToArray(GetType(String)), String()) End Function

// c#

private String[] OtimizarQuebra(String stringToSplit , Char[] delimitador)

(6)

{

// Quebra uma lista de palavras dentro do array.

String[] Palavras;

Palavras = stringToSplit.Split(delimitador);

// Adiciona cada palavra valida no ArrayList.

ArrayList PalavrasFiltradas = new ArrayList();

foreach (String Palavra in Palavras) {

// A string não pode ser vazia, neste caso um espaço.

if (Palavra != "") {

PalavrasFiltradas.Add(Palavra);

} }

// Converte o ArrayList para um array de String.

return (String[])PalavrasFiltradas.ToArray(typeof(String));

}

O problema está resolvido:

' vb

Dim sentenca As String = "Sobremesa preparada com banana, maçã," & _ " abacate, melancia ou outra fruta."

Dim separador() As Char = {",", " "}

Dim palavras() As String

' Quebra a sentenca.

palavras = OtimizarQuebra(sentenca, separador)

' Mostra a sentenca dividida.

Dim palavra As String For Each palavra In palavras

Response.Write("Palavra: " & palavra & "<br />") Next

// c#

String sentenca = "Sobremesa preparada com banana, maçã," +

" abacate, melancia ou outra fruta.";

Char[] separador = { ' ',',' };

String[] palavras;

// Quebra a sentenca.

palavras = OtimizarQuebra(sentenca, separador);

// Mostra a sentenca dividida.

foreach (String palavra in palavras) {

Response.Write("Palavra: " + palavra + "<br />");

}

Saída:

Palavra: Sobremesa Palavra: preparada Palavra: com Palavra: banana

(7)

Palavra: maçã Palavra: abacate Palavra: melancia Palavra: ou Palavra: outra Palavra: fruta.

www.devmedia.com.br/articles/viewcomp.asp?

comp=6360

Referências

Documentos relacionados