Поскольку вас интересует только количество слов, и вас не интересуют отдельные слова, String.Split
можно было бы избежать. String.Split
удобен, но он излишне генерирует (потенциально) большое количество объектов String
, что, в свою очередь, создает ненужную нагрузку на сборщик мусора. Для каждого слова в вашем тексте необходимо создать экземпляр нового объекта String
, а затем скоро его собрать, так как вы его не используете.
Для домашнего задания это может не иметь значения, но если ваш текст содержимое ящика меняется часто, и вы делаете это вычисление внутри обработчика события, может быть разумнее просто перебирать символы вручную. Если вы действительно хотите использовать String.Split
, перейдите к более простой версии, например Yonix .
В противном случае используйте алгоритм, подобный этому:
var text = richTextBox1.Text.Trim();
int wordCount = 0, index = 0;
while (index < text.Length)
{
// check if current char is part of a word
while (index < text.Length && !char.IsWhiteSpace(text[index]))
index++;
wordCount++;
// skip whitespace until next word
while (index < text.Length && char.IsWhiteSpace(text[index]))
index++;
}
Этот код должен работать лучше, если у вас есть несколько пробелов между каждым словом.
Хорошо. Итак, после того, как я в течение целого дня гонялся за рассказом, наконец-то появился свет ...
В мобильных IOS нет такой вещи, как «щелчок» в качестве прослушивателя событий, однако «затронутый» находится в списке элементов:
Поэтому я протестировал его и устроил небольшой праздник, как он работал !!!!! сейчас я только что продублировал код, чтобы он работал, но позже мне придется его переписать. Затем стиль кнопки будет смотреть на это немного позже.
document.addEventListener("touchend", function(e) {
if (e.target.id === "burger-time"){
document.querySelector('nav').classList.add('open');
document.getElementById('burger-time').style.visibility ='hidden';
} else {
document.querySelector('nav').classList.remove('open');
document.getElementById('burger-time').style.visibility ='visible';
}
});
document.addEventListener("click", function(e) {
if (e.target.id === "burger-time"){
document.querySelector('nav').classList.add('open');
document.getElementById('burger-time').style.visibility ='hidden';
} else {
document.querySelector('nav').classList.remove('open');
document.getElementById('burger-time').style.visibility ='visible';
}
});
Таким образом, в этом есть нечто большее, чем просто различия между "touchend" и "click". Документация MDN содержала несколько полезных комментариев о том, как добавить прослушиватель событий для мобильных устройств!
Blockquote
blockquote>Лучшие практикиSection
[119 ] Вот некоторые рекомендации, которые следует учитывать при использовании событий касания: ... Добавьте обработчики точек касания к определенному целевому элементу (а не ко всему документу или узлам выше в дерево документов).
Blockquote
blockquote>Очевидно, что не рекомендуется использовать «document.addEventListener ()» для мобильных устройств, а не только для iPhone. Говорят, лучше выбрать купить отдельный элемент. https://developer.mozilla.org/en-US/docs/Web/API/Touch_events/Using_Touch_Events
В этом случае эти изменения необходимы для приготовления бургера. Работа с меню на всех устройствах, к которым у меня есть доступ:
let rootEvent = document.getElementById("rootElement"); let burgerNav = document.getElementById("burger-time"); burgerNav.addEventListener("click", function(e) { document.querySelector('nav').classList.add('open'); burgerNav.style.visibility ='hidden'; e.preventDefault(); e.stopPropagation(); }); closeNav = function(){ if (burgerNav.style.visibility === "hidden"){ document.querySelector('nav').classList.remove('open'); burgerNav.style.visibility ='visible'; } }; rootEvent.addEventListener("click", closeNav); rootEvent.addEventListener("touchend", closeNav);
<html lang="en" dir="ltr" id="rootElement">
Это, вероятно, не единственный способ сделать это, но если муравей сломался ...