重複の可能性:
電話番号の正規表現
私は正規表現に慣れていないので、その可能性はまだよくわかりません。したがって、この問題を解決するのが難しいかどうかはわかりません。
私は非常に自由にフォーマットされた電話文字列を持っており、それらを固定された方法でフォーマットする必要があります (少なくとも最善を尽くします)。「899-123-4-45; 22-56-87」、「5 99-25-31-71」、「577-345-678,274-89-56」。
私が知っている情報は次のとおりです。
新しい固定電話は 2-XX-XX-XX で始まり、その後に 6 つの数字が続きます (それらの間には "-" または " " の 2 種類の区切り文字があり、それらの番号は不明です)。
古い固定電話には XX-XX-XX の 6 つの番号しかありません。
古い携帯電話のコードには、8XX-YY-YY-YY の 9 つの数字が含まれています。最初のものは 8 です。XX はオペレーターのコードです (すべてを知っているわけではありません)。
新しい携帯電話コードには 5XX-YY-YY の 9 つの数字が含まれており、唯一の違いは最初の数字です。
一部のレコードには、古い固定電話コード、新しい固定電話コード、古い携帯電話コード、および新しい携帯電話コードが含まれています。
「-」と「,」の 2 つの区切り記号のみを使用して、すべての数値を新しい形式で保存する必要があります。例: 「599-12-34-56,2-45-61-34」、「2-45-65-12」、「574-12-34-56」。
どこから始めたらいいのかわからない。大きな文字列を数値を含むものだけで分割し、数値のみを取得してどの形式であるかを判断する必要がありますか? または、より簡単な解決策はありますか?
この文字列をどのように解析しますか: "574-12-34-56; 2 456 324, 455-566 2 22 40 56"? まず、これらを 3 つの部分に分割しますか? 「;」で分割できますか または " " または ","? 次に、数値のみを取得し、そのスタイルを決定して適切にフォーマットする必要がありますか?