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);