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