Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como apagar um item de um array?

Criei um array de inteiros e quero remover dele a ultima posição. No Js eu utilizava o ".splice". Existe algum correspondente ao splice no c#?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ValidadorCartao
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Digite o numero do cartao");
            string cartaoInserido = Console.ReadLine();
            int[] cartaoLista = cartaoInserido.ToString().Select(o => Convert.ToInt32(o) - 48).ToArray();



                Console.ReadLine();
        }
    }
}
2 respostas
solução!

Bom dia Lucas,

Uma possibilidade é você implementar o uma lógica de remoção do elemento do vetor, por exemplo:

Console.WriteLine("Hello, World!");
Console.WriteLine("Digite o numero do cartao");
string cartaoInserido = Console.ReadLine();
int[] cartaoLista = cartaoInserido.ToString().Select(o => Convert.ToInt32(o) - 48).ToArray();
// Listar o Array
foreach (var item in cartaoLista)
{
    Console.WriteLine(item);
}

Console.Write("Digite o valor a ser removido:");
int valorARemover = int.Parse(Console.ReadLine());

//Invocação do método remover
Remover();

//Declaração do método remover
void Remover() { 
    int indiceItem = -1;
     //Encontrar o indíce onde está o valor a ser removido.
    for (int i = 0; i < cartaoLista.Length; i++)
    {
            int itemAtual = cartaoLista[i];

            if (itemAtual == valorARemover)
            {
                indiceItem = i;
            }
    }

    //Movimentar o array para substituir o valor a ser removido
    for (int i = indiceItem; i < cartaoLista.Length - 1; i++)
    {
            cartaoLista[i] = cartaoLista[i + 1];
    }

    //Adicionar zero a última posição do Array.
    cartaoLista [cartaoLista.Length - 1] = 0;
    for (int i = 0; i < cartaoLista.Length; i++)
    {
            int itemAtual = cartaoLista[i];

            if (itemAtual == valorARemover)
            {
                indiceItem = i;
            }
    }

}

Console.ReadLine();

Mas isso pode ser bem trabalhoso, no C# e nas bibliotecas do .NET podemos trabalhar com coleções, um exemplo usando a classe List:

Console.WriteLine("Hello, World!");
Console.WriteLine("Digite o numero do cartao");
string cartaoInserido = Console.ReadLine();
List<int> cartaoLista = cartaoInserido.ToString().Select(o => Convert.ToInt32(o) - 48).ToList<int>();

// Exibir a lista
ExibeLista();

Console.Write("Valor a remover: ");
int valorARemover = int.Parse(Console.ReadLine());
Remover(valorARemover);
ExibeLista();

void Remover(int valor)
{
    if (cartaoLista.Remove(valor))// O método que remove da lista o elemento.
    {
        Console.WriteLine("Elemento removido!");
    }
    else
    {
        Console.WriteLine($"Valor[{valor}] não encontrado para remoção.");
    }

}

void ExibeLista()
{
    foreach (int i in cartaoLista)
    {
        Console.WriteLine(i);
    }
}

Espero que ajude!

PS: Criei os exemplos com VS 2022 e .NET 6.

Att.

Obrigado!