Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти слова в тексте у которых первая и последняя буквы совпадают (https://javascript.ru/forum/misc/60096-najjti-slova-v-tekste-u-kotorykh-pervaya-i-poslednyaya-bukvy-sovpadayut.html)

Alex961 10.12.2015 22:25

Найти слова в тексте у которых первая и последняя буквы совпадают
 
Помогите пожалуйста, уже замучился . Пытался сначала решить задачу сам, но никак не выходит. Точнее выходит но не до конца. Программа работает только если я введу с клавиатуры одно слово, а с текстами не работает. Объясните ,пожалуйста ,что не так.Как сделать чтобы программа работала с текстом. Вот код:
var text;
text=prompt("enter a text");
for(var i=0;i<text.length;i++){
 
if(text.charAt(i)===text.charAt(text.length-1)){

    document.write("the first and the last letters are the same");
}
else {
   document.write("the first and the last letters are not the same");
}
 break; }

рони 10.12.2015 22:31

Alex961,
разбить текст на слова наверно нужно сначала, потом отфильтровать, затем вывести (желательно без всяких document.write)

Alex961 10.12.2015 22:57

Спасибо большое за ответ. Очень помогло. Вот только вопрос, а почему желательно без document.write? Я просто пока новичок.

рони 10.12.2015 23:01

Alex961,
потому что сотрёт страницу если использовать в скриптах после загрузки страницы (в данном случае не критично)

Alex961 10.12.2015 23:08

Благодарю...Иногда ответ лежит на поверхности, но я почему-то его не замечаю...:(

рони 10.12.2015 23:08

Alex961,
:)
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  span{
    background-image: -webkit-gradient(linear, left, right, color-stop(0, #FFD700), color-stop(1, #FF0000));
    background-image: -o-linear-gradient(left, #FFD700, #FF0000);
    background-image: -moz-linear-gradient(left, #FFD700, #FF0000);
    background-image: -webkit-linear-gradient(left, #FFD700, #FF0000);
    background-image: linear-gradient(to right, #FFD700, #FF0000);
    font-size: 24px;
    font-weight: bold;
    color: #FFFFFF;
    padding: 6px 4px;
    border-radius: 4px;
    margin: 5px;
  }

  </style>
</head>

<body>
<script>
var text=prompt("enter a text")
  .split(/\s+/)
  .filter(function(word) {
  return word && word.charAt(0)===word.charAt(word.length-1)
}).map(function(word) {
  return '<span>'+word+'<\/span>'
});
text.forEach(function(word, i ) {
   document.body.children[i].insertAdjacentHTML("beforeBegin", word);
})
</script>
</body>

</html>

Alex961 10.12.2015 23:14

Круууто как ... А мне еще пока учиться и учиться...Спасибо вам за помощь..:thanks:

рони 10.12.2015 23:36

Alex961,
не очень :) пришлось 35 строку поправить чтоб переменную text сохранить, если не нужна то var text= в прежнем варианте лишнее.
prompt("enter a text")
  .split(/\s+/)
  .filter(function(word) {
  return word && word.charAt(0)===word.charAt(word.length-1)
}).map(function(word) {
  return '<span>'+word+'<\/span>'
}).forEach(function(word, i ) {
   document.body.children[i].insertAdjacentHTML("beforeBegin", word);
})


Часовой пояс GMT +3, время: 01:00.