una ultimo ultima texto quitar puntos posicion numeros eliminar como caracter cadena c# arrays blackjack

ultimo - quitar puntos de un string c#



Eliminar el Ășltimo elemento de la matriz de cadena (4)

@Flat Eric explicó por qué su solución no funciona.

Aquí hay una alternativa para eliminar el último elemento:

newDeck = newDeck.Reverse().Skip(1).Reverse().ToArray();

Aclaración:

[a, b, c] => Reverse => [c, b, a] => Skip(1) => [b, a] => Reverse() => [a, b]

Estoy trabajando en un simple proyecto de juego de blackjack. En primer lugar creo la matriz de tarjetas:

string[] deck = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", };

de lo que multiplico 4 y dado deckNumber :

newDeck = Enumerable.Repeat(deck, deckNumber*4).SelectMany(x => x).ToArray();

Cuando quiero eliminar la última tarjeta de la matriz, aplico esto:

newDeck = newDeck.Where(w => w != newDeck.Last()).ToArray();

así que el problema es que el código no elimina el último elemento de la matriz, actúa como si hubiera múltiples matrices y elimina todos los últimos elementos de ellos. Por ejemplo con una baraja:

cards: 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A 2 3 4 5 6 7 8 9 10 J Q K A

Cuando aplico mi comando remover se convierte en:

cards: 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K 2 3 4 5 6 7 8 9 10 J Q K

elimina todas las A de la matriz. Pero quiero eliminar solo el último elemento de toda la matriz. ¿Cuál es el problema? ¿Cómo puedo resolver esto?


Esto debería eliminar el último elemento de tu Array:

Array.Resize(ref newDeck, newDeck.Length - 1);


Para eliminar solo el último elemento usa esto:

newDeck = newDeck.Take(newDeck.Count() - 1).ToArray();

Su solución elimina todos los elementos que son iguales al último elemento. Para una cadena, esto significa que elimina todos los elementos iguales a A


Puedes usar la clase Array para redimensionar:

Array.Resize(ref result, result.Length - 1);