在javascript中将单独的地址字符串序列化为一个

时间:2013-08-11 18:06:19

标签: javascript string parsing serialization

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

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

假设用户已输入

  

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

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

  

10 Flinders Lane 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;

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

1 个答案:

答案 0 :(得分: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(' ' );