【问题标题】:serializing separate address string into one in javascript在javascript中将单独的地址字符串序列化为一个
【发布时间】:2014-09-21 04:52:50
【问题描述】:

您可能已经知道如何将地址解析为单独的部分,例如单元编号/街道编号/街道名称/城镇/州等... 这里几乎类似的问题。我想将那些单独输入的数据序列化为一个。例如,我有

Level /
Unit number /
Street number /
Street name /
Street type /
Town /
State /
Post code / Etc...

假设用户输入

空白 / 空白 / 10 / 弗林德斯 / 车道 / 空白 / VIC / 3000

然后我想将信息放在一个字符串中,例如

10 弗林德斯巷 VIC 3000

我目前正在这样做

if (level !== '' && level !== 0) {string = level + '/';}
if (unit !== '' && unit !== 0) {string += unit;}
if (streetNo !== '' && streetNo !== 0) {string += '/' + streetNo + ' ';} 
else {string += ' ';}
string += streetName + ' ' + streetType + ' ';
if (town !== '' && town !== '--' && town !== 0) {string += town + ' ';} 
else {string += ' ';}
string += state;

它是硬编码的,但我想不出更好的方法。我想知道是否有更好、更高效+专业的方法来实现这一点。

【问题讨论】:

  • 好吧,如果level''0,则该代码有问题。您的所有其他条件都假定 string 已经被初始化。一开始你需要string = "";,以防level没有设置它。
  • 我很好奇streetNo.g。什么是streetNo
  • @T.J.Crowder 哦,抱歉,这是一个错字。它是我代码的一部分,其中包含无法识别的变量名称哈哈。是的,我在代码之前初始化了字符串 var。谢谢! :D

标签: javascript string parsing serialization


【解决方案1】:

因为您想要在字符串上使用的分隔符似乎会根据它们所遵循的字符串的哪一部分而有所不同(有些有'/',有些有' '),所以您可能无法在其中做很多事情。

如果分隔符始终相同(例如空格),您可能使用数组,然后使用join

var parts = [];
if (level      !== '' && level      !== 0)      parts.push(level);
if (unit       !== '' && unit       !== 0)      parts.push(unit);
if (streetNo.g !== '' && streetNo.g !== 0)      parts.push(streetNo.g);
if (streetName !== '' && streetName !== 0)      parts.push(streetName);
if (streetType !== '' && streetType !== 0)      parts.push(streetType);
if (town !== '' && town !== 0 && town !== '--') parts.push(town);
if (state      !== '' && state      !== 0)      parts.push(state);
string = parts.join(' ' );

【讨论】:

  • 是的,我似乎没有太多选择。感谢您提供简洁的代码。 :)
猜你喜欢
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2021-10-29
  • 2011-12-31
  • 2018-06-07
  • 1970-01-01
相关资源
最近更新 更多