Поиск последнего слова в JavaScript - PullRequest
4 голосов
/ 15 апреля 2011

Я делаю некоторую логику для последнего слова в предложении.Слова разделяются либо пробелом , либо знаком '-' .

Какой самый простой способ получить его?

Редактировать

Я мог бы сделать это, пройдя назад от конца предложения, но я бы хотел найти лучший способ

Ответы [ 6 ]

16 голосов
/ 15 апреля 2011

Попробуйте разделить регулярное выражение, которое соответствует пробелам или дефисам, и взять последний элемент:

var lastWord = function(o) {
  return (""+o).replace(/[\s-]+$/,'').split(/[\s-]/).pop();
};
lastWord('This is a test.'); // => 'test.'
lastWord('Here is something to-do.'); // => 'do.'

Как указывает @alex, стоит обрезать любые пробелы или дефисы.Обеспечение аргумента в виде строки тоже хорошая идея.

6 голосов
/ 15 апреля 2011

Использование регулярного выражения:

/.*[\s-](\S+)/.exec(str)[1];

, которое также игнорирует пробелы в конце

0 голосов
/ 15 апреля 2011

Ну, используя функцию разделения

  string lastWord = input.Split(' ').Last();

или

string[] parts = input.Split(' ');
string lastWord = parts[parts.Length - 1];

Хотя это будет работать для этой строки, она может не работать для немного другой строки, так что вынеобходимо выяснить, как соответствующим образом изменить код или опубликовать все правила.

string input = "...., API";

здесь запятая будет частью«слово».

Также, если первый способ получения слова является правильным, т.е.все после последнего пробела, и ваша строка придерживается следующих правил:

Will always contain at least one space
Does not end with one or more space (in case of this you can trim it)

, затем вы можете использовать этот код, который будет выделять меньше объектов в куче для GC, о котором позже придется беспокоиться:

string lastWord = input.Substring(input.LastIndexOf(' ') + 1);

Я надеюсь, что это поможет

0 голосов
/ 15 апреля 2011

Вы можете попробовать что-то вроде этого ...

<script type="text/javascript">
var txt = "This is the sample sentence";
spl = txt.split(" ");
for(i = 0; i < spl.length; i++){
    document.write("<br /> Element " + i + " = " + spl[i]); 
}
</script>
0 голосов
/ 15 апреля 2011

Здесь аналогичное обсуждение, посмотрите

0 голосов
/ 15 апреля 2011

Вы пробовали использовать функцию lastIndexOf http://www.w3schools.com/jsref/jsref_lastIndexOf.asp

Или функцию Split http://www.w3schools.com/jsref/jsref_split.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...