У меня была аналогичная проблема, но мне пришлось заменить массив терминов. Все решения, которые я нашел, не сработали, если два слова находились в тексте рядом друг с другом (поскольку их границы перекрывались). Поэтому мне пришлось использовать небольшой модифицированный подход:
var text = "Ještě. že; \"už\" à. Fürs, 'anlässlich' že že že.";
var terms = ["à","anlässlich","Fürs","už","Ještě", "že"];
var replaced = [];
var order = 0;
for (i = 0; i < terms.length; i++) {
terms[i] = "(^\|[ \n\r\t.,;'\"\+!?-])(" + terms[i] + ")([ \n\r\t.,;'\"\+!?-]+\|$)";
}
var re = new RegExp(terms.join("|"), "");
while (true) {
var replacedString = "";
text = text.replace(re, function replacer(match){
var beginning = match.match("^[ \n\r\t.,;'\"\+!?-]+");
if (beginning == null) beginning = "";
var ending = match.match("[ \n\r\t.,;'\"\+!?-]+$");
if (ending == null) ending = "";
replacedString = match.replace(beginning,"");
replacedString = replacedString.replace(ending,"");
replaced.push(replacedString);
return beginning+"{{"+order+"}}"+ending;
});
if (replacedString == "") break;
order += 1;
}
См. Код в скрипке: http://jsfiddle.net/antoninslejska/bvbLpdos/1/
Регулярное выражение вдохновлено: http://breakthebit.org/post/3446894238/word-boundaries-in-javascripts-regular
Я могу " t сказать, что я нахожу решение элегантным ...
Вы могли попробовать (нуль distanceSinceStart и timeSinceStart в touchesBegan):
distanceSinceStart = distanceSinceStart + distanceFromPrevious;
timeSinceStart = timeSincestart + timeSincePrevious;
speed = distanceSinceStart/timeSinceStart;
который даст Вам среднюю скорость, так как Вы запустили касание (общее расстояние/общее время).
Или Вы могли сделать скользящее среднее значение скорости, возможно, экспоненциальное скользящее среднее:
const float lambda = 0.8f; // the closer to 1 the higher weight to the next touch
newSpeed = (1.0 - lambda) * oldSpeed + lambda* (distanceFromPrevious/timeSincePrevious);
oldSpeed = newSpeed;
Можно скорректировать лямбду к значениям около 1, если Вы хотите дать больше веса недавним значениям.