【问题标题】:Javascript : How to find the position of a zip code in a string?Javascript:如何在字符串中找到邮政编码的位置?
【发布时间】:2014-12-26 14:59:49
【问题描述】:

我的地址是这样的:7 CITE VANEAU - 75007 PARIS。我的目标是获取邮政编码。每个地址的邮政编码可以更改,但始终为 6 位数。我想在字符串中找到邮政编码开头的位置。你有什么想法吗?

【问题讨论】:

  • 您能否发布您迄今为止所做的尝试以及您为自己解决问题所做的任何研究?
  • 是否总是有带空格的字符'-'?如果是这样 myStrnig.indexOf(' - ') + 1 可以完成这项工作,尽管它不是一个很好的解决方案..
  • 不,我忘了说,有时还有不止一个“-”符号,所以我不能用。
  • 只适用于巴黎吗?如果是,你可以做myStrnig.indexOf('75')
  • 你提到6位数,但例子只有5位

标签: javascript split zipcode digit


【解决方案1】:

http://jsfiddle.net/jeffreyTang/8038whkt/

var re = /[0-9]{6}/; 
var str = '7 CITE VANEAU - 750007 PARIS';

// get the index of the dash
var dash = str.indexOf('-');

// remove everything before the dash
str = str.substring(dash);

// execute the pattern match
var m = re.exec(str);

// this is your answer
console.log(m[0]);

【讨论】:

  • 感谢您的帮助,杰夫。
【解决方案2】:

只需使用String.search。

>> "7 CITE VANEAU - 750071 PARIS".search(/\d{6}/);
<< 16

见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search。

【讨论】:

  • 也很有趣。谢谢@torazaburo。
【解决方案3】:

先找到邮编:

  var arr = address.match(/(\d+)/g) ;
    var zip ;

for (var i = 0 ;i < arr.length; i ++) {
      if (arr[i].length ==6) zip = arr[i];
  }

var pos = address.indexOf(zip)   

这段代码可以简化。

【讨论】:

  • 谢谢,我也找到了: var zipcode = address.match(/(?:^|\D)(\d{5})(?=\D|$)/g )[0];
  • @JeroendeLau 是的,我忘记了 arr 的长度道具。操作人员还说 zip 的长度始终为 6,但提供的长度为 5。
  • 我有点困惑为什么这会是公认的答案。它在字符串中查找多个数字序列,甚至是那些因为太短而不能是邮政编码的数字序列。它在正则表达式中使用多余的括号。然后它费力地检查每个匹配的长度为 6,即使该限制很容易被指定为正则表达式的一部分。然后它必须使用另一个调用indexOf 来查找位置,即使其他字符串/正则表达式例程免费提供此功能。在我看来,这个答案不应该被接受,以免误导未来的访问者。
  • 另外,如果没有匹配,这段代码会导致运行时错误(它会尝试访问null的length属性)。
  • 我删除了“已接受的答案”。感谢您对这个问题的建议,它对我理解问题有很大帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多