Если у вас есть группа захвата ((...)
) в регулярном выражении, которое вы передаете .split
, захваченный текст возвращается как часть результата. Вот почему у вас есть "1"
, "2"
и т. Д. Между "Item "
.
Помимо некоторого варианта решения @Ori Dori , вы также можете решить это с помощью прогнозного утверждения (?=...)
, которое является не захватывающей конструкцией.
var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = string.split(/(?=Item)/);
console.log(arr);
Это будет работать, разбивая строку непосредственно перед любым появлением текста "Item"
.
Для более грубого решения без использования регулярных выражений:
var string = 'Item 1Item 2Item 3Item 4Item NItem N-1';
var arr = [];
var i = string.indexOf('Item', 1);
while (i >= 0) {
arr.push(string.substr(0, i));
string = string.substr(i);
i = string.indexOf('Item', 1);
}
arr.push(string);
console.log(arr);
Принятие Вас имеет System.Type
который описывает Ваш List<>
, можно использовать Type.GetGenericArguments()
метод для получения Type
экземпляр, который описывает то, из чего это является список.
что-то вроде этого?
foreach (System.Reflection.PropertyInfo info
in typeof(BusinessEntity).GetProperties())
{
if (info.PropertyType.IsGenericType &&
info.PropertyType.Name.StartsWith("IList") &&
info.PropertyType.GetGenericArguments().Length > 0 &&
info.PropertyType.GetGenericArguments()[0] == typeof(string)
)
{
return true;
}
}