Удалить первый элемент из массива
PHP-разработчик, работающий с С#.
Я использую технику, чтобы удалить блок текста из большой строки, вставив строку в массив, а затем переместив первый элемент из массива и вернув то, что осталось обратно в строку.
С PHP (удивительный и легкий язык) это было просто
$array = explode('somestring',$string);
array_shift($array);
$newstring = implode(' ', $array);
и я закончил.
Я так сержусь на С#, что не позволяю создавать динамические массивы и не предлагать функции по умолчанию, которые могут делать то же самое, что и PHP в отношении массивов. Вместо динамических массивов мне приходится создавать списки и предопределять ключевые структуры и т.д. Но я новичок, и я уверен, что все еще есть одинаково грациозные способы сделать то же самое с С#.
Кто-нибудь покажет мне чистый способ достичь этой цели с помощью С#?
Перефразируйте вопрос: Как удалить первый элемент из массива с помощью кода С#.
Вот как далеко я получил, но RemoveAt выдает ошибку при отладке, поэтому я не считаю, что это работает:
//scoop-out feed header information
if (entry_start != "")
{
string[] parts = Regex.Split(this_string, @entry_start);
parts.RemoveAt(0);
this_string = String.Join(" ", parts);
}
Ответы
Ответ 1
Я так сержусь на С#, что не позволяю создавать динамические массивы
Вы можете взглянуть на класс List<T>
. Его RemoveAt может стоить проверить.
Но для вашего конкретного сценария вы можете просто использовать LINQ и Пропустить метод расширения (не забудьте добавить using System.Linq;
в ваш файл чтобы привести его в сферу охвата):
if (entry_start != "")
{
string[] parts = Regex.Split(this_string, @entry_start).Skip(1).ToArray();
this_string = String.Join(" ", parts);
}
Ответ 2
С# не предназначен для быстрой и грязной работы, и он не специализируется на обработке текста. Кроме того, метод, который вы используете для удаления некоторой части строки с начала, является сумасшедшим imho.
Почему бы вам просто не использовать String.Substring(int start, int length)
в сочетании с String.IndexOf("your delimiter")
?
Ответ 3
Вот соответствующий код С#:
string input = "a,b,c,d,e";
string[] splitvals = input.Split(',');
string output = String.Join(",", splitvals, 1, splitvals.Length-1);
MessageBox.Show(output);
Ответ 4
Вы можете использовать LINQ для этого:
if (entry_start != "")
this_string = String.Join(" ", Regex.Split(this_string, @entry_start).Skip(1).ToArray());
Ответ 5
string split = ",";
string str = "asd1,asd2,asd3,asd4,asd5";
string[] ary = str.Split(new string[] { split }, StringSplitOptions.RemoveEmptyEntries);
string newstr = string.Join(split, ary, 1, ary.Count() - 1);
разделяется на ",". удаляет первую запись. затем объединяется с ","
Ответ 6
Как указано выше, вы можете использовать LINQ. Skip(int)
вернет IEnumerable<string>
, который затем можно отбросить как массив.
string[] myArray = new string[]{"this", "is", "an", "array"};
myArray = myArray.Skip(1).toArray();
Ответ 7
Вам может быть удобнее использовать общие списки, чем массивы, которые больше похожи на массивы PHP.
Список <T>
Но если ваша цель - "удалить блок текста из большой строки", тем проще будет:
string Example = "somestring";
string BlockRemoved = Example.Substring(1);
// BlockRemoved = "omestring"
Edit
Я неправильно понял вопрос, думая, что вы просто удалили первый элемент из массива, в котором массив состоял из символов, составляющих строку.
Чтобы разбить строку на разделитель, посмотрите на метод String.Split
. Ниже приведены некоторые полезные примеры.