Вы можете использовать String#rpartition
, который ищет заданный шаблон из правого конца строки и разбивает его, когда находит его.
'a_b_c_d_e'.rpartition(/_/)
=> ["a_b_c_d", "_", "e"]
s = 'a_b_c_d_e'
parts = s.rpartition(/_/)
[parts.first, parts.last]
=> ["a_b_c_d", "e"]
РЕДАКТИРОВАТЬ: применение советов из комментариев:
'a_b_c_d_e'.rpartition('_').values_at(0,2)
=> ["a_b_c_d", "e"]
Существует работа, оказывающаяся включить его. Проверьте проект Сериализации Дерева выражений на галерею MSDN Code.
Нет, в основном. Вы не можете передать Expression
также, так как это говорит MemberInfo
узлы. Ваш лучший выбор является строковым представлением предиката.