Usuário com melhor resposta
DÚVIDA COMO CONSTRUIR UMA REGRA

Pergunta
-
Seguinte, imaginem que tenho uma variavel com esse valor:
String Test = "ABS_TRF@1454987 (2), ABS_TRFX@11255 (3), ABS_TRFX@22222"
QUERO q ele retorne isso pra mim, o numero entre parenteses representa ele 2 vezes ou seja.. quero q retorne e que fique assim:
String Test = "ABS_TRF@1454987, ABS_TRF@1454987,ABS_TRFX@11255,ABS_TRFX@11255,ABS_TRFX@11255, ABS_TRFX@22222".
Como faria um codigo pratico pra isso.
Respostas
-
Olá, segue minha solução.
string txt = "ABS_TRF@1454987 (2), ABS_TRFX@11255 (3), ABS_TRFX@22222"; string[] colunas = txt.Split(','); int x = 0; txt = ""; while (x < colunas.Length) { string aux = ""; if (colunas[x].IndexOf(')') != -1){ aux = colunas[x]; int y = Convert.ToInt32(aux.Substring(aux.Length-2, 1)); while (y > 0) { if (txt.Equals("")){ txt = txt + colunas[x].Substring(0, colunas[x].Length-4); } else { txt = txt + ", " + colunas[x].Substring(0, colunas[x].Length-4); } y--; } } else { if (!txt.Equals("")){ txt = txt + ", "; } txt = txt + colunas[x]; } x++; }
Espero ter ajudado.- Editado Juliano CustódioMVP quinta-feira, 26 de janeiro de 2017 11:31 Identação
- Sugerido como Resposta Juliano CustódioMVP quinta-feira, 26 de janeiro de 2017 11:35
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 27 de janeiro de 2017 11:18
Todas as Respostas
-
Boa tarde Alan,
No momento estou sem Visual Studio, fiz uma possível solução em VBA, caso te atenda, só adaptar para C#.Se necessário posso fazer à adaptação mais tarde:
Sub DistribuirString() Dim test As String Dim i, j As Integer test = "ABS_TRF@1454987 (2), ABS_TRFX@11255 (3), ABS_TRFX@22222" arrItem = Split(test, ",") 'Dividir os item em um Array For i = 0 To UBound(arrItem) arrExtrair = Split(arrItem(i), "(") 'Separar a informação a ser duplicada e o numero de loops If UBound(arrExtrair) = 0 Then 'Capturar o número de loops, caso o mesmo não exista, colocar 1 NumLoop = 1 Else NumLoop = CInt(Replace(arrExtrair(1), ")", "")) End If For j = 1 To NumLoop 'Gravar os valores na variável Resultado = Resultado & Trim(arrExtrair(0)) If i <> UBound(arrItem) Then Resultado = Resultado & "," 'Evitar que coloque a virgula no último item Next j Next i End Sub
.
-
-
-
-
Olá, segue minha solução.
string txt = "ABS_TRF@1454987 (2), ABS_TRFX@11255 (3), ABS_TRFX@22222"; string[] colunas = txt.Split(','); int x = 0; txt = ""; while (x < colunas.Length) { string aux = ""; if (colunas[x].IndexOf(')') != -1){ aux = colunas[x]; int y = Convert.ToInt32(aux.Substring(aux.Length-2, 1)); while (y > 0) { if (txt.Equals("")){ txt = txt + colunas[x].Substring(0, colunas[x].Length-4); } else { txt = txt + ", " + colunas[x].Substring(0, colunas[x].Length-4); } y--; } } else { if (!txt.Equals("")){ txt = txt + ", "; } txt = txt + colunas[x]; } x++; }
Espero ter ajudado.- Editado Juliano CustódioMVP quinta-feira, 26 de janeiro de 2017 11:31 Identação
- Sugerido como Resposta Juliano CustódioMVP quinta-feira, 26 de janeiro de 2017 11:35
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 27 de janeiro de 2017 11:18
-
Bom dia,
Devido a falta de interação do autor dessa pergunta,
essa thread está sendo fechada. Caso o problema ainda
esteja ocorrendo, favor abrir uma nova thread.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.