4

配送業者として FedEx を使用しています。彼らのラベル プリンターでは、住所 1 行あたり 35 文字までに制限されています。私の同僚は、最初の行が 35 文字の制限を超えた場合に、住所行を 2 番目の住所行に分割することについて話し合っています。Address Validation Service を使用している場合にも、この問題が発生しています。

興味がありますが、他の人は 35 文字の制限をどのように処理しましたか?

前もって感謝します!

編集

私が開発したソリューションを投稿して、他の誰かを助けることができるようにします (Perl 用に作成され、無実の人を保護するために変数名が変更されました)。

# handle too long strings
my $street1_string = sprintf( "%s", $ShipTo_Street_Line1 ) );
my $street2_string = sprintf( "%s", $ShipTo_Street_Line2 ) );
my $street1_final;
my $street2_final;
my $street1_length  = length($street1_string);
my $last_space_pos = rindex($street1_string, ' ');

# find and split on last space less than 35 characters
while($last_space_pos >= 35)
{
    if ($last_space_pos < 35)
    {
        break;
    }

    $last_space_pos = rindex($street1_string, ' ', $last_space_pos-1);
}

$street1_final = substr($street1_string, 0, $last_space_pos);
$street2_final = substr($street1_string, $last_space_pos+1, $street1_length) . ' ' . $street2_string;
4

2 に答える 2

2

以前は、usps と ups のラベルを扱う必要がありました。35 文字の制限に加えて、3 つの住所行の制限もあります。住所行が 35 文字を超える場合は、「カンマ」の後で分割しようとします。カンマが存在しない場合は、行末に最も近いスペースを分割します。すでに 3 つの住所行がある場合は、余分な住所行を「会社」フィールドに移動します (配送ラベルには、連絡先、会社、および 3 つの住所行フィールドがあります)。分割が必要な住所行が 2 つ以上あり、3 つの住所行すべてが使用されている場合は、エラーで失敗します。これは、10 万アドレスに 1 回発生します。

于 2013-10-03T13:09:38.817 に答える