1

住所をユニット番号/通り番号/通り名/町/州などの別々のセクションに解析する方法をすでに知っているかもしれません...ここでもほぼ同様の問題です。別々に入力されたデータを1つにシリアライズしたい。たとえば、私は

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

ユーザーが入力したとしましょう

ブランク / ブランク / 10 / フリンダース / レーン / ブランク / VIC / 3000

次に、次のような1つの文字列で情報を取得したいと思います

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;

ハードコーディングされていますが、これ以上の方法は思いつきません。これを達成するためのより効率的で専門的な方法があるかどうか知りたいです。

4

1 に答える 1

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(' ' );
于 2013-08-11T18:16:09.300 に答える