通过Javascript在两个其他字符串之间查找字符串的有效方法

时间:2009-06-24 05:35:50

标签: javascript string

这应该很简单,也许使用正则表达式,但我认为有一种更简单 - 更快的方法。目前我通过使用一些分割来完成这项工作,但这看起来确实是一种糟糕的方法。

示例字符串:

  

于2009年6月9日。标记:

我需要做的是将该日期(2009年6月9日)改为三个字符串(2009年6月9日)。显然这个日期可能会有所不同,例如2011年5月25日。我假设使用两个外部字符串,这些字符串是一致的(“on”和“.Tagged”),基于它们的搜索是最好的方法。这个月总是三个字母。

通过Javascript更好的方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以使用正则表达式:

var match = str.match(/on (\w+) (\d{2}), (\d{4})\. Tagged/);
// match = ["on Jun 09, 2009. Tagged", "Jun", "09", "2009"]

答案 1 :(得分:3)

你可以使用substring命令来完成它,但是如果源数据发生了变化,正则表达式会更简单并且不容易破坏。

您可以使用此正则表达式:

 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 :(得分:2)

您可以使用搜索/切片搜索字符串...它不如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>