Вы можете легко использовать метод Javascript .Split()
, чтобы разделить строки на слова, а затем найти первый символ. Например:
$('li').each(function(e) {
//Get full string as words
var words = $(this).text().split(" ");
for (var i = 0; i < words.length; i++) {
if (words[i].charAt(0) == "#") {
words[i] = "<span class=hashtag >" + words[i] + "</span>";
}
if (words[i].charAt(0) == "@") {
words[i] = "<span class=at >" + words[i] + "</span>";
}
}
$(this).html(words.join(" "));
});
.at {
color: red;
}
.hashtag {
color: blue
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<li>I am a #hashtag</li>
<li>Hey @Bill, what's your #dog called?</li>
<li>Try to only process #letters, #numbers, and not #punctuation.</li>
Примечание: я сделал это, используя простой метод. Вам нужно будет обработать слова, чтобы обнаружить, что они являются буквами / цифрами и не содержат других символов.
Это получит Вас хеш объектов, описывающих ассоциации и другие вещи на данной модели Model.reflections
. Вы хотите все значения в хеше, которые являются Reflection::AssociationReflection
классы. Этот код должен получить Вас массив, который Вы хотите:
association_names = []
Model.reflections.each { |key, value| association_names << key if value.instance_of?(ActiveRecord::Reflection::AssociationReflection) }
Можно использовать один массив для определения ассоциаций и использования в проверках как:
BELONGS_TO_LIST = w%{ project task }
BELONGS_TO_LIST.each {|b| belongs_to b}
validates_inclusion_of :status_of, :in => BELONGS_TO_LIST