asp.net c # преобразовать строку в массив

#c# #arrays #string

#c# #массивы #строка

Вопрос:

У меня есть строка в C #, подобная этой:

 string s = "_4_5_81_9_2";
  

Я хочу преобразовать ее в массив, подобный этому:

 string A[]={4,5,81,9,2}
  

с php я делал это с помощью функции разнесения:

 $A = explode("_", $s);
  

Каков аналогичный способ в C #?

Комментарии:

1. это разделение в C # msdn.microsoft.com/en-us/library/system.string.split.aspx

2. да, лучше быть int A[]

3. Google для «как разделить строку в c #?» все спешат дать ответ на мое удивление, но забывают, что это вопрос очень низкого качества, который не показывает никаких усилий, вложенных в попытку его решения. Даже Intellisense в IDE покажет вам доступный метод разделения.

4. @user3797485 Пожалуйста, отредактируйте свой вопрос, чтобы либо объявить A[] как int , либо поместить строки в {...} . string A[] = {4,5,81,9,2} не компилируется.

5. @PraveenKumar Ну, если бы этот вопрос касался c …, но подождите … вы предлагаете разделить строку, используя этот код?

Ответ №1:

Правильный вызов

 string s = "_4_5_81_9_2";
string[] A = s.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
  

У вас есть символ подчеркивания в начале вашей строки, который нужно разделить. Если вам нужны только числа, которые вам нужно вызвать с помощью StringSplitOptions.Удалите пустые элементы, чтобы избежать начальной пустой строки

Просто для завершения ответа (заслуга @ksven в том, что он первым заметил комментарий из OP) преобразование в массив целых чисел принимает такую форму

 int[] numbers = A.Select(x => Convert.ToInt32(x)).ToArray();
  

Комментарии:

1. @Steve, Ksven прав; первый параметр — это массив. Перегрузка без StringSplitOptions имеет params модификатор, но не этот

2. Да, да, простите ….., кстати, теперь его исправленный ответ (@Ksven) — лучший, потому что он также преобразует массив строк в массив целых чисел

Ответ №2:

Это называется String.Split() . Вы можете увидеть ссылку здесь.

 String s = "_4_5_81_9_2" ; 
String [] result = s.Split("_".ToCharArray(), StringSplitOption.RemoveEmptyEntries) ; 
  

Если вы хотите получить массив целых чисел :

  int[] result = s.Split("_".ToCharArray(), StringSplitOption.RemoveEmptyEntries).Select(c => Convert.ToInt32(c)).ToArray();  
  

Ответ №3:

В c # вы можете использовать приведенный ниже код

 string[] words = s.TrimStart('_').Split('_');
  

Комментарии:

1. Это не дает ожидаемого результата

2. @Steve О, ирония судьбы 😀

3. @ThorstenDittmar Действительно странный выбор во всех аспектах.

Ответ №4:

Используйте это:

 string s = "_4_5_81_9_2";
String[] items = s.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
  

Это удаляет пустые записи, возникающие в результате начального _ или двойного подчеркивания.

Ответ №5:

                         string s = "_4_5_81_9_2";

                        if(s.StartsWith("_")){
                           s = s.Substring(1).Replace('_', ',');
                        }

                        string [] s2 = s.Split(',').ToArray();
                        
                        //or simply...
                        string[] s3 = s.TrimStart('_').Split('_');
                        



                        MessageBox.Show(" s2: "   s2.GetValue(0)   ""   " s: "   s.ToString() " s3:" s3.GetValue(0));