Эффективный способ найти строку между двумя другими строками через Javascript - PullRequest
1 голос
/ 24 июня 2009

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

Пример строки:

09 июня 2009 года. Tagged:

Что мне нужно сделать, так это превратить эту дату (09 июня 2009 г.) в три строки (9 июня 2009 г.). Очевидно, что эта дата может варьироваться в зависимости от того, что может быть, например, 25 мая 2011 года. Я предполагаю использовать две внешние строки, которые были бы согласованными («on» и «. Tagged»), и поиск по ним - лучший метод. Месяц всегда будет состоять из трех букв.

Что может быть лучше для этого через Javascript?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 24 июня 2009

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

var match = str.match(/on (\w+) (\d{2}), (\d{4})\. Tagged/);
// match = ["on Jun 09, 2009. Tagged", "Jun", "09", "2009"]
3 голосов
/ 24 июня 2009

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

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

 var input = "on Jun 09, 2009 Tagged:";
 var date = input.match(/([a-zA-Z]{3}) (\d{1,2}), (\d{4})/);
 // date = ["Jun 09, 2009", "Jun", "09", "2009"];
 var simpledate = date.slice(1);
 // simpledate = ["Jun", "09", "2009"];

При использовании RegEx я считаю этот сайт чрезвычайно полезным: http://www.regular -expressions.info / javascriptexample.html

Он предоставляет тестер регулярных выражений JavaScript, который очень удобен! Вы можете подключить те же данные и регулярное выражение, запустить его и посмотреть соответствующие данные. Это помогло мне понять регулярные выражения намного лучше. Например, вы можете видеть, что мои регулярные выражения и другие ответы разные, но выполняют одно и то же.

2 голосов
/ 04 августа 2010

Вы можете искать строку, используя поиск / фрагмент ... Это не так эффективно, как RegEx.

<script type="text/javascript">
  function sBs(ss1,ss2,fs) {
    ss1 = fs.search(ss1) + ss1.length; // continue *after* the first substring
    ss2 = fs.search(ss2); //grab the position of the beginning of substring2
    var sbsResult = fs.slice(ss1,ss2); 
    alert(sbsResult);
}
</script>
<a href="#" onClick="sBs('a','b','a b c');">get substring!</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...