Tôi giả sử bạn đang làm việc với một mảng cơ bản của chuỗi:
var strItems = new string[] { "1", "2", "3", "4", "5" };
Trong .NET, mảng đó là luôn luôn sẽ dài 5 yếu tố. Để loại bỏ một phần tử, bạn sẽ phải sao chép các phần tử còn lại vào một mảng mới và trả về nó. Đặt giá trị tại vị trí thành null
không xóa giá trị đó khỏi mảng.
Bây giờ, với những thứ như LINQ này là rất dễ dàng (không hiển thị ở đây), hoặc bạn có thể gian lận bằng cách sử dụng bộ sưu tập List<>
và làm điều này:
var list = new List<string>(strItems);
list.Remove("3");
strItems = list.ToArray();
Nhưng tôi không nghĩ rằng điều đó sẽ dạy cho bạn bất cứ điều gì.
Bước đầu tiên là tìm chỉ mục của phần tử bạn muốn xóa. Bạn có thể sử dụng Array.IndexOf
để giúp bạn. Hãy tìm phần tử ở giữa, "3":
int removeIndex = Array.IndexOf(strItems, "3");
Nếu phần tử không được tìm thấy, nó sẽ trả về -1, vì vậy hãy kiểm tra điều đó trước khi làm bất cứ điều gì.
if (removeIndex >= 0)
{
// continue...
}
Cuối cùng, bạn phải sao chép các phần tử (ngoại trừ phần tử mà chúng tôi không muốn) vào mảng mới. Vì vậy, hoàn toàn, bạn kết thúc với một cái gì đó như thế này (bình luận cho lời giải thích):
string strInput = Console.ReadLine();
string[] strItems = new string[] { "1", "2", "3", "4", "5" };
int removeIndex = Array.IndexOf(strItems, strInput);
if (removeIndex >= 0)
{
// declare and define a new array one element shorter than the old array
string[] newStrItems = new string[strItems.Length - 1];
// loop from 0 to the length of the new array, with i being the position
// in the new array, and j being the position in the old array
for (int i = 0, j = 0; i < newStrItems.Length; i++, j++)
{
// if the index equals the one we want to remove, bump
// j up by one to "skip" the value in the original array
if (i == removeIndex)
{
j++;
}
// assign the good element from the original array to the
// new array at the appropriate position
newStrItems[i] = strItems[j];
}
// overwrite the old array with the new one
strItems = newStrItems;
}
Và bây giờ strItems
sẽ là mảng mới, trừ đi giá trị quy định để loại bỏ.
gì là 'intAmount' và' strItems'? Bạn đang làm rất nhiều thao tác của các chỉ số vòng lặp của bạn trong vòng lặp của bạn, mà thường là một ý tưởng tồi. –
Bạn có thể làm rõ câu hỏi của mình: bạn nói [1,2,3,4,5], với thao tác xóa 1, trở thành [2,3,4,5,5]. Làm thế nào để bạn chọn 5 là yếu tố để nhân đôi vào cuối? – ssamuel
strItems là mảng chuỗi, intAmount là số phần tử và strInput là phần tử mà người dùng chọn để xóa. – user1033065