Найти первую букву последнего слова с jquery внутри строки (строка может иметь несколько слов) - PullRequest
2 голосов
/ 05 марта 2010

Hy, есть ли способ найти первую букву последнего слова в строке? Строки являются результатом функции парсера XML. Внутри цикла each () я получаю все узлы и помещаю каждое имя в переменную следующим образом: var person = xml.find ("name"). Find (). Text ()

Теперь человек держит строку, это может быть:

  • Анамария Форрест Гамп
  • Джон Лок

Как видите, первая строка содержит 3 слова, а вторая - 2 слова.

Мне нужны первые буквы из последних слов: «G», «L»,

Как мне это сделать? TY

Ответы [ 3 ]

4 голосов
/ 05 марта 2010

Это должно сделать это:

var person = xml.find("name").find().text();

var names = person.split(' ');
var firstLetterOfSurname = names[names.length - 1].charAt(0);
1 голос
/ 05 марта 2010

Это решение будет работать, даже если ваша строка содержит одно слово.Возвращает желаемый символ:

myString.match(/(\w)\w*$/)[1];

Объяснение: «Соответствует символу слова (и запоминает его) (\w), затем соответствует любому количеству символов слова \w*, затем соответствует концу строки $».Другими словами: «Совпадение последовательности символов слова в конце строки (и запоминание первого из этих символов слова)».match возвращает массив с полным соответствием в [0], а затем запомненные строки в [1], [2] и т. Д. Здесь мы хотим [1].

Регулярные выражения заключены в /в JavaScript: http://www.w3schools.com/js/js_obj_regexp.asp

0 голосов
/ 05 марта 2010

Вы можете взломать его с помощью регулярных выражений:

'Marry Jo Poppins'.replace(/^.*\s+(\w)\w+$/, "$1");      // P
'Anamaria Forrest Gump'.replace(/^.*\s+(\w)\w+$/, "$1"); // G

В противном случае ответ Марка Б тоже подойдет:)


edit:

Регулярное выражение Альсьенде + JavaScriptcombo myString.match(/(\w)\w*$/)[1], вероятно, немного более универсален, чем мой.

объяснение регулярного выражения

/^.*\s+(\w)\w+$/
^     beginning of input string
.*    followed by any character (.) 0 or more times (*)
\s+   followed by any whitespace (\s) 1 or more times (+)
(     group and capture to $1
  \w  followed by any word character (\w)
)     end capture
\w+   followed by any word character (\w) 1 or more times (+)
$     end of string (before newline (\n))

регулярное выражение Альсьенде

/(\w)\w*$/
(     group and capture to $1
  \w  any word character
)     end capture
\w*   any word character (\w) 0 or more times (*)

summary

Regularвыражения очень мощные или, как вы могли бы сказать, «богоподобны!» Regular-Expressions.info - отличная отправная точка, если вы хотите узнать больше.

Надеюсь, это поможет:)

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