Здравствуйте!
Рассылки в WhatsApp — дело довольно сложное и неблагодарное, особенно если речь идёт о массовых. Пара жалоб от пользователей — и Вы в бане, и всё нужно начинать сначала.
Эту проблему решит Wapico — многофункциональный сервис для WhatsApp-маркетинга. Он автоматизирует весь процесс рассылки от покупки и прогрева номера до переноса лидов в CRM.
Возможности сервиса
Рассмотрим, что же именно предлагает клиентам Wapico. Мы не будем останавливаться на том, как настроить и запустить рассылку в WhatsApp— в сервисе есть очень подробные и наглядные инструкции (а также техподдержка, которая всегда поможет).
Сосредоточимся именно на возможностях, чтобы Вы знали, с чем Вам предстоит иметь дело.
1. Приборная панель
Первое, что Вы видите в личном кабинете — дашборд со статистикой. Здесь отображается общее количество отправленных в этом месяце сообщений, данные по рассылкам — в том числе по неудавшимся, и по автоответчикам.
2. Мультичат
Соберите все чаты в одном окне — причём не только из разных рассылок, но и с разных номеров. Так Вы будете оперативнее реагировать на сообщения клиентов — и шансы продаж, конечно, закономерно вырастут.
3. Автоответчик
Автоответчик работает так: Вы рассылаете пользователям первое сообщение, чтобы побудить их к ответу — например, задаёте вопрос. Ответ обязательно нужен, чтобы у пользователя исчезла кнопка «заблокировать». А затем автоответчик отправляет ему предложение.
Настраивайте, спустя какое время после ответа пользователь получит Ваше сообщение и каким будет это сообщение, включайте контакты в группы или наоборот исключайте, добавляйте картинки или видео — в общем, полная свобода действий.
4. Рассылка сообщений
Сегментируйте аудиторию рассылки и собирайте контакты в группы. Создавайте рекламные кампании: можно рассылать текстовые сообщения, а можно рекламные с кнопкой. Можно запланировать рассылку заранее, а можно запустить её сразу. Управляйте, с каких аккаунтов отправлять сообщения.
Кстати, сервис поддерживает Spintax, то есть сообщения можно рандомизировать и персонализировать.
5. Чат-бот
Незаменимая функция, когда дело касается рассылок — просто потому что физически невозможно успеть отвечать всем вручную. Настраивайте разные сценарии взаимодействия с пользователями в зависимости от ключевых слов — или их неиспользования. Как и в случае рассылки, общаться чат-бот может как текстом, как и с помощью кнопок.
6. Экспорт участников в группу
Очень удобная функция: собирайте аудиторию из групп. Процедура простая: отправляете в группу сообщение, нажимаете кнопку — и список контактов Ваш. А дальше Вы уже и сами знаете, что делать.
7. API
Интегрируйте Ваши устройства с облачным API вотсаппа и подключите сервис к своему сайту и CRM — чтобы автоматизировать процессы и лиды сразу попадали в систему.
8. Управление аккаунтами
Чтобы снизить риск блокировки и охватить большую аудиторию, ведите рассылку сразу с нескольких аккаунтов. Управляйте ими из одного окна: активируйте, устанавливайте дневные лимиты на количество рассылок, удаляйте ненужные.
9. Файловый менеджер
Добавляйте в рассылки изображения, видео и pdf-файлы. Все они удобно хранятся в одном месте — при создании сообщения просто выберите нужный файл из библиотеки. Пополнить её можно разными способами: загрузить медиа с компьютера, из гугл-диска или прямой ссылкой. Чтобы долго не искать нужную картинку, пользуйтесь фильтром.
10. Шаблоны сообщений
Ещё одна довольно очевидная функция, которая значительно упростит Вам жизнь. Создавайте шаблоны сообщений на разные случаи, чтобы сэкономить время в будущем.
Дополнительные функции
Помимо стандартного набора для рассылок Wapico предлагает клиентам ещё несколько интересных функций для автоматизации работы.
1. Проверка на наличие WhatsApp
Онлайн чекер вотсапп: загружаете ф него клиентскую базу и видите, кто пользуется whatsapp, а кто нет. Соответственно, кому можно делать рассылки через мессенджер, а до кого придётся добираться другими путями. Это отлично скажется на конверсии — ну и сэкономите, конечно.
2. Форматирование номеров
Для корректной отправки рассылки номера абонентов нужно привести к единому формату. Что, собственно, и сделает для Вас сервис.
3. WhatsApp-чат на сайт
Установите на свой сайт бесплатный виджет чата WhatsApp. В сущности, это тот же самый онлайн-консультант, который можно интегрировать с чат-ботом — или диалог может вести живой оператор.
4. Авторегистратор WhatsApp аккаунтов
Ещё одна фишка сервиса: Вам не нужно заморачиваться и самостоятельно регистрировать аккаунты для рассылки. Программа не только сделает это за Вас, но и автоматически подгрузит аккаунты в личный кабинет, а ещё прогреет их — то есть номера будут выглядеть как принадлежащие реальным людям и это снизит риск блокировки.
Преимущества Wapico
Возможностей, как видите, хватает. Отмечу, чем сервис выгоднее всего отличается от конкурентов:
1. Многофункциональность. Сервис можно использовать и для массовых рассылок (и даже для спама), и для сбора лидов и общения с клиентами, и как онлайн-консультант. И всё это в одном окне.
2. Гибкость. Можно подключить к сервису один аккаунт, а можно пятьдесят. Сообщения можно рандомизировать до бесконечности, а чат-бот может реагировать не только на ключевые фразы, но и на их отсутствие. Отправлять можно как текстовые сообщения, так и сообщения с кнопками — а ещё медиафайлы. В общем, Вы можете настроить идеальную для себя рассылку.
3. API. Интегрируйте сервис со своей CRM-системой, чтобы автоматизировать процесс обработки заявок. Интегрируйте устройства между собой, чтобы работать в программе могли несколько менеджеров одновременно. И так далее.
4. Техподдержка. Техподдержкой занимаются сами разработчики и на большинстве тарифов есть возможность участия в закрытом Telegram-чате. То есть помощь Вы будете получать буквально из первых рук.
5. Обучение. На сайте Wapico огромная база знаний. Во-первых, Вы, конечно, найдёте тем максимально подробные инструкции по использованию сервиса от простейших действий до сборки сценариев для чат-бота. Во-вторых, там много информации и по базовому WhatsApp-маркетингу: например, Вы узнаете, как самостоятельно прогреть номер и как избежать блокировок.
Коротко о главном
Wapico — буквально как швейцарский нож, если говорить о мессенджер-маркетинге. В первую очередь это, конечно, сервис для массовых рассылок Whatsapp, но его можно использовать и для обычного общения с клиентами.
Встроенный парсер групп и форматирование номеров помогут Вам дополнить и упорядочить клиентскую базу. Автоответчик, чат-бот и интеграция с сайтом и CRM автоматизируют работу с клиентами. Возможность подключить множество номеров — причём уже прогретых — снизит риск блокировки и увеличит эффективность рассылки. И это далеко не всё, что может сервис.
Wapico предлагает целых 7 тарифов на любой кошелёк и нужды, будь Вы мастером маникюра или крупным маркетинговым агентством. Стоимость начинается от 390 рублей в месяц. Тестовый период длится неделю и позволяет отправить до 100 бесплатных сообщений — более чем достаточно для того, чтобы проверить, подходит ли Вам сервис.
Рассылки в WhatsApp — дело довольно сложное и неблагодарное, особенно если речь идёт о массовых. Пара жалоб от пользователей — и Вы в бане, и всё нужно начинать сначала.
Эту проблему решит Wapico — многофункциональный сервис для WhatsApp-маркетинга. Он автоматизирует весь процесс рассылки от покупки и прогрева номера до переноса лидов в CRM.
Возможности сервиса
Рассмотрим, что же именно предлагает клиентам Wapico. Я не буду останавливаться на том, как настроить и запустить рассылку в WhatsApp— в сервисе есть очень подробные и наглядные инструкции (а также техподдержка, которая всегда поможет).
Сосредоточимся именно на возможностях, чтобы Вы знали, с чем Вам предстоит иметь дело.
1. Приборная панель
Первое, что Вы видите в личном кабинете — дашборд со статистикой. Здесь отображается общее количество отправленных в этом месяце сообщений, данные по рассылкам — в том числе по неудавшимся, и по автоответчикам.
2. Мультичат
Соберите все чаты в одном окне — причём не только из разных рассылок, но и с разных номеров. Так Вы будете оперативнее реагировать на сообщения клиентов — и шансы продаж, конечно, закономерно вырастут.
3. Автоответчик
Автоответчик работает так: Вы рассылаете пользователям первое сообщение, чтобы побудить их к ответу — например, задаёте вопрос. Ответ обязательно нужен, чтобы у пользователя исчезла кнопка «заблокировать». А затем автоответчик отправляет ему предложение.
Настраивайте, спустя какое время после ответа пользователь получит Ваше сообщение и каким будет это сообщение, включайте контакты в группы или наоборот исключайте, добавляйте картинки или видео — в общем, полная свобода действий.
4. Рассылка сообщений
Сегментируйте аудиторию рассылки и собирайте контакты в группы. Создавайте рекламные кампании: можно рассылать текстовые сообщения, а можно рекламные с кнопкой. Можно запланировать рассылку заранее, а можно запустить её сразу. Управляйте, с каких аккаунтов отправлять сообщения.
Кстати, сервис поддерживает Spintax, то есть сообщения можно рандомизировать и персонализировать.
5. Чат-бот
Незаменимая функция, когда дело касается рассылок — просто потому что физически невозможно успеть отвечать всем вручную. Настраивайте разные сценарии взаимодействия с пользователями в зависимости от ключевых слов — или их неиспользования. Как и в случае рассылки, общаться чат-бот может как текстом, как и с помощью кнопок.
6. Экспорт участников в группу
Очень удобная функция: собирайте аудиторию из групп. Процедура простая: отправляете в группу сообщение, нажимаете кнопку — и список контактов Ваш. А дальше Вы уже и сами знаете, что делать.
7. API
Интегрируйте Ваши устройства с облачным API вотсаппа и подключите сервис к своему сайту и CRM — чтобы автоматизировать процессы и лиды сразу попадали в систему.
8. Управление аккаунтами
Чтобы снизить риск блокировки и охватить большую аудиторию, ведите рассылку сразу с нескольких аккаунтов. Управляйте ими из одного окна: активируйте, устанавливайте дневные лимиты на количество рассылок, удаляйте ненужные.
9. Файловый менеджер
Добавляйте в рассылки изображения, видео и pdf-файлы. Все они удобно хранятся в одном месте — при создании сообщения просто выберите нужный файл из библиотеки. Пополнить её можно разными способами: загрузить медиа с компьютера, из гугл-диска или прямой ссылкой. Чтобы долго не искать нужную картинку, пользуйтесь фильтром.
10. Шаблоны сообщений
Ещё одна довольно очевидная функция, которая значительно упростит Вам жизнь. Создавайте шаблоны сообщений на разные случаи, чтобы сэкономить время в будущем.
Дополнительные функции
Помимо стандартного набора для рассылок Wapico предлагает клиентам ещё несколько интересных функций для автоматизации работы.
1. Проверка на наличие WhatsApp
Онлайн чекер вотсапп: загружаете ф него клиентскую базу и видите, кто пользуется whatsapp, а кто нет. Соответственно, кому можно делать рассылки через мессенджер, а до кого придётся добираться другими путями. Это отлично скажется на конверсии — ну и сэкономите, конечно.
2. Форматирование номеров
Для корректной отправки рассылки номера абонентов нужно привести к единому формату. Что, собственно, и сделает для Вас сервис.
3. WhatsApp-чат на сайт
Установите на свой сайт бесплатный виджет чата WhatsApp. В сущности, это тот же самый онлайн-консультант, который можно интегрировать с чат-ботом — или диалог может вести живой оператор.
4. Авторегистратор WhatsApp аккаунтов
Ещё одна фишка сервиса: Вам не нужно заморачиваться и самостоятельно регистрировать аккаунты для рассылки. Программа не только сделает это за Вас, но и автоматически подгрузит аккаунты в личный кабинет, а ещё прогреет их — то есть номера будут выглядеть как принадлежащие реальным людям и это снизит риск блокировки.
Преимущества Wapico
Возможностей, как видите, хватает. Отмечу, чем сервис выгоднее всего отличается от конкурентов:
1. Многофункциональность. Сервис можно использовать и для массовых рассылок (и даже для спама), и для сбора лидов и общения с клиентами, и как онлайн-консультант. И всё это в одном окне.
2. Гибкость. Можно подключить к сервису один аккаунт, а можно пятьдесят. Сообщения можно рандомизировать до бесконечности, а чат-бот может реагировать не только на ключевые фразы, но и на их отсутствие. Отправлять можно как текстовые сообщения, так и сообщения с кнопками — а ещё медиафайлы. В общем, Вы можете настроить идеальную для себя рассылку.
3. API. Интегрируйте сервис со своей CRM-системой, чтобы автоматизировать процесс обработки заявок. Интегрируйте устройства между собой, чтобы работать в программе могли несколько менеджеров одновременно. И так далее.
4. Техподдержка. Техподдержкой занимаются сами разработчики и на большинстве тарифов есть возможность участия в закрытом Telegram-чате. То есть помощь Вы будете получать буквально из первых рук.
5. Обучение. На сайте Wapico огромная база знаний. Во-первых, Вы, конечно, найдёте тем максимально подробные инструкции по использованию сервиса от простейших действий до сборки сценариев для чат-бота. Во-вторых, там много информации и по базовому WhatsApp-маркетингу: например, Вы узнаете, как самостоятельно прогреть номер и как избежать блокировок.
Коротко о главном
Wapico — буквально как швейцарский нож, если говорить о мессенджер-маркетинге. В первую очередь это, конечно, сервис для массовых рассылок Whatsapp, но его можно использовать и для обычного общения с клиентами.
Встроенный парсер групп и форматирование номеров помогут Вам дополнить и упорядочить клиентскую базу. Автоответчик, чат-бот и интеграция с сайтом и CRM автоматизируют работу с клиентами. Возможность подключить множество номеров — причём уже прогретых — снизит риск блокировки и увеличит эффективность рассылки. И это далеко не всё, что может сервис.
Wapico предлагает целых 7 тарифов на любой кошелёк и нужды, будь Вы мастером маникюра или крупным маркетинговым агентством. Стоимость начинается от 390 рублей в месяц. Тестовый период длится неделю и позволяет отправить до 100 бесплатных сообщений — более чем достаточно для того, чтобы проверить, подходит ли Вам сервис.
Нашли ошибку в тексте? Выделите фрагмент и нажмите ctrl+enter
Несколько PHP-функций для форматирования телефонных номеров.
1
Формат +7 (xxx) xxx-xx-xx
Формат +7 (xxx) xxx-xx-xx очень распространён, но правильнее писать номера без скобок. В нормах русского языка скобки используются для поясняющей и дополняющей информации, а так как без кода оператора или города дозвониться до абонента не получится, то это уже не дополнительная информация.
function phone_format($phone)
{
$phone = trim($phone);
$res = preg_replace(
array(
'/[+]?([7|8])[-|s]?([-|s]?(d{3})[-|s]?)[-|s]?(d{3})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?(d{3})[-|s]?(d{3})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?([-|s]?(d{4})[-|s]?)[-|s]?(d{2})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?(d{4})[-|s]?(d{2})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?([-|s]?(d{4})[-|s]?)[-|s]?(d{3})[-|s]?(d{3})/',
'/[+]?([7|8])[-|s]?(d{4})[-|s]?(d{3})[-|s]?(d{3})/',
),
array(
'+7 ($2) $3-$4-$5',
'+7 ($2) $3-$4-$5',
'+7 ($2) $3-$4-$5',
'+7 ($2) $3-$4-$5',
'+7 ($2) $3-$4',
'+7 ($2) $3-$4',
),
$phone
);
return $res;
}
PHP
Тестирование и результаты
Мобильные и городские:
echo phone_format('+7 (495) 1234567');
echo phone_format('+8 (495) 123 45 67');
echo phone_format('+7(495)123-45-67');
echo phone_format('+7(495)1234567');
echo phone_format('+7 495 123-45-67');
echo phone_format('+8 495 123 45 67');
echo phone_format('+7 495 1234567');
echo phone_format('+7-495-123-45-67');
echo phone_format('84951234567');
PHP
+7 (495) 123-45-67
+7 (495) 123-45-67
+7 (495) 123-45-67
+7 (495) 123-45-67
+7 (495) 123-45-67
+7 (495) 123-45-67
+7 (495) 123-45-67
+7 (495) 123-45-67
+7 (495) 123-45-67
Региональные:
echo phone_format('7 4734 12-34-56');
echo phone_format('7 4735 123-456');
PHP
+7 (4734) 12-34-56
+7 (4735) 123-456
С текстом:
echo phone_format('+7-495-123-45-67 Иван');
echo phone_format('+84951234567 доп. 123');
echo phone_format('+74951234567, +79031234567');
echo phone_format('тел. +84951234567');
PHP
+7 (495) 123-45-67 Иван
+7 (495) 123-45-67 доп. 123
+7 (495) 123-45-67, +7 (903) 123-45-67
тел. +7 (495) 123-45-67
Номера с ошибками:
echo phone_format('495 1234567');
echo phone_format('8(8001234567');
echo phone_format('8800;1234567');
PHP
495 1234567
8(8001234567
8800;1234567
2
Формат +7 xxx xxx-xx-xx
function phone_format($phone)
{
$phone = trim($phone);
$res = preg_replace(
array(
'/[+]?([7|8])[-|s]?([-|s]?(d{3})[-|s]?)[-|s]?(d{3})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?(d{3})[-|s]?(d{3})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?([-|s]?(d{4})[-|s]?)[-|s]?(d{2})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?(d{4})[-|s]?(d{2})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?([-|s]?(d{4})[-|s]?)[-|s]?(d{3})[-|s]?(d{3})/',
'/[+]?([7|8])[-|s]?(d{4})[-|s]?(d{3})[-|s]?(d{3})/',
),
array(
'+7 $2 $3-$4-$5',
'+7 $2 $3-$4-$5',
'+7 $2 $3-$4-$5',
'+7 $2 $3-$4-$5',
'+7 $2 $3-$4',
'+7 $2 $3-$4',
),
$phone
);
return $res;
}
PHP
Результат:
/* Мобильные и городские */
+7 495 123-45-67
+7 495 123-45-67
+7 495 123-45-67
+7 495 123-45-67
+7 495 123-45-67
+7 495 123-45-67
+7 495 123-45-67
+7 495 123-45-67
+7 495 123-45-67
/* Региональные */
+7 4734 12-34-56
+7 4735 123-456
/* С текстом */
+7 495 123-45-67 Иван
+7 495 123-45-67 доп. 123
+7 495 123-45-67, +7 903 123-45-67
тел. +7 495 123-45-67
/* Номера с ошибками */
495 1234567
8(8001234567
8800;1234567
3
Формат +7-xxx-xxx-xx-xx
function phone_format($phone)
{
$phone = trim($phone);
$res = preg_replace(
array(
'/[+]?([7|8])[-|s]?([-|s]?(d{3})[-|s]?)[-|s]?(d{3})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?(d{3})[-|s]?(d{3})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?([-|s]?(d{4})[-|s]?)[-|s]?(d{2})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?(d{4})[-|s]?(d{2})[-|s]?(d{2})[-|s]?(d{2})/',
'/[+]?([7|8])[-|s]?([-|s]?(d{4})[-|s]?)[-|s]?(d{3})[-|s]?(d{3})/',
'/[+]?([7|8])[-|s]?(d{4})[-|s]?(d{3})[-|s]?(d{3})/',
),
array(
'+7-$2-$3-$4-$5',
'+7-$2-$3-$4-$5',
'+7-$2-$3-$4-$5',
'+7-$2-$3-$4-$5',
'+7-$2-$3-$4',
'+7-$2-$3-$4',
),
$phone
);
return $res;
}
PHP
Результат:
/* Мобильные и городские */
+7-495-123-45-67
+7-495-123-45-67
+7-495-123-45-67
+7-495-123-45-67
+7-495-123-45-67
+7-495-123-45-67
+7-495-123-45-67
+7-495-123-45-67
+7-495-123-45-67
/* Региональные */
+7-4734-12-34-56
+7-4735-123-456
/* С текстом */
+7-495-123-45-67 Иван
+7-495-123-45-67 доп. 123
+7-495-123-45-67, +7 903 123-45-67
тел. +7-495-123-45-67
/* Номера с ошибками */
495 1234567
8(8001234567
8800;1234567
TEXT
Форматирование номера телефона
17.11.2019, 12:56. Показов 4225. Ответов 2
Есть задача
«Привет, если ты знаешь номер может быть написан по-разному, т. 8915 12 — 34 — 567 вот так, например номер + 7(915)123 — 45-67 может писаться, и так + 7978123456779787654321 где 79787654321 тоже номер, но какой-то рукооп написал их слитно, и теперь надо разделять… и нужно систему научить разделять их 12345 просто цифры, их учитывать не стоит, а тебе нужен номер где точно встречается 8 или 7 потом код потом 7 циферок номера «
достать из строки все номера телефонов
0_о
Добавлено через 16 минут
Вот так
Python | ||
|
[‘89151234567’, ‘79151234567’, ‘7978123456779787654321’, ‘79787654321’, ‘12345’, ‘8’, ‘7’, ‘7’]
Добавлено через 13 минут
теперь их надо отсортировать
и «длинные» разделить
Добавлено через 7 минут
Короче )
получилось =))
Python | ||
|
Добавлено через 4 минуты
Может можно это как-то сократить?
Добавлено через 15 секунд
Может можно это как-то сократить?
0
I have been storing phone numbers as longs and I would like to simply add hyphens when printing the phone number as a string.
I tried using DecimalFormat
but that doesn’t like the hyphen. Probably because it is meant for formatting decimal numbers and not longs.
long phoneFmt = 123456789L;
DecimalFormat phoneFmt = new DecimalFormat("###-###-####");
System.out.println(phoneFmt.format(phoneNum)); //doesn't work as I had hoped
Ideally, I would like to have parenthesis on the area code too.
new DecimalFormat("(###)-###-####");
What is the correct way to do this?
asked Feb 25, 2011 at 7:38
1
You can use String.replaceFirst with regex method like
long phoneNum = 123456789L;
System.out.println(String.valueOf(phoneNum).replaceFirst("(\d{3})(\d{3})(\d+)", "($1)-$2-$3"));
answered Feb 25, 2011 at 9:12
hhbarriusohhbarriuso
9765 silver badges7 bronze badges
2
To get your desired output:
long phoneFmt = 123456789L;
//get a 12 digits String, filling with left '0' (on the prefix)
DecimalFormat phoneDecimalFmt = new DecimalFormat("0000000000");
String phoneRawString= phoneDecimalFmt.format(phoneFmt);
java.text.MessageFormat phoneMsgFmt=new java.text.MessageFormat("({0})-{1}-{2}");
//suposing a grouping of 3-3-4
String[] phoneNumArr={phoneRawString.substring(0, 3),
phoneRawString.substring(3,6),
phoneRawString.substring(6)};
System.out.println(phoneMsgFmt.format(phoneNumArr));
The result at the Console looks like this:
(012)-345-6789
For storing phone numbers, you should consider using a data type other than numbers.
answered Feb 25, 2011 at 7:58
Tomas NarrosTomas Narros
13.4k2 gold badges40 silver badges56 bronze badges
The easiest way to do this is by using the built in MaskFormatter in the javax.swing.text library.
You can do something like this :
import javax.swing.text.MaskFormatter;
String phoneMask= "###-###-####";
String phoneNumber= "123423452345";
MaskFormatter maskFormatter= new MaskFormatter(phoneMask);
maskFormatter.setValueContainsLiteralCharacters(false);
maskFormatter.valueToString(phoneNumber) ;
answered Aug 9, 2013 at 16:07
lac_devlac_dev
1,27613 silver badges20 bronze badges
2
If you really need the right way then you can use Google’s recently open sourced libphonenumber
answered Feb 25, 2011 at 7:42
Aravind YarramAravind Yarram
78.1k45 gold badges230 silver badges321 bronze badges
2
You could also use https://github.com/googlei18n/libphonenumber. Here is an example:
import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;
String s = "18005551234";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber phoneNumber = phoneUtil.parse(s, Locale.US.getCountry());
String formatted = phoneUtil.format(phoneNumber, PhoneNumberUtil.PhoneNumberFormat.NATIONAL);
Here you can get the library on your classpath: http://mvnrepository.com/artifact/com.googlecode.libphonenumber/libphonenumber
answered Aug 16, 2015 at 5:45
0
The worst possible solution would be:
StringBuilder sb = new StringBuilder();
long tmp = phoneFmt;
sb.append("(");
sb.append(tmp / 10000000);
tmp = tmp % 10000000;
sb.append(")-");
sb.apppend(tmp / 10000);
tmp = tmp % 10000000;
sb.append("-");
sb.append(tmp);
answered Feb 25, 2011 at 7:44
VanyaVanya
3,0332 gold badges17 silver badges12 bronze badges
1
This is how I ended up doing it:
private String printPhone(Long phoneNum) {
StringBuilder sb = new StringBuilder(15);
StringBuilder temp = new StringBuilder(phoneNum.toString());
while (temp.length() < 10)
temp.insert(0, "0");
char[] chars = temp.toString().toCharArray();
sb.append("(");
for (int i = 0; i < chars.length; i++) {
if (i == 3)
sb.append(") ");
else if (i == 6)
sb.append("-");
sb.append(chars[i]);
}
return sb.toString();
}
I understand that this does not support international numbers, but I’m not writing a «real» application so I’m not concerned about that. I only accept a 10 character long as a phone number. I just wanted to print it with some formatting.
Thanks for the responses.
answered Feb 25, 2011 at 8:03
styflestyfle
21.2k25 gold badges87 silver badges128 bronze badges
You can implement your own method to do that for you, I recommend you to use something such as this. Using DecimalFormat
and MessageFormat
. With this method you can use pretty much whatever you want (String,Integer,Float,Double
) and the output will be always right.
import java.text.DecimalFormat;
import java.text.MessageFormat;
/**
* Created by Yamil Garcia Hernandez on 25/4/16.
*/
public class test {
// Constants
public static final DecimalFormat phoneFormatD = new DecimalFormat("0000000000");
public static final MessageFormat phoneFormatM = new MessageFormat("({0}) {1}-{2}");
// Example Method on a Main Class
public static void main(String... args) {
try {
System.out.println(formatPhoneNumber("8091231234"));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber("18091231234"));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber("451231234"));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber("11231234"));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber("1231234"));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber("231234"));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber(""));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber(0));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(formatPhoneNumber(8091231234f));
} catch (Exception e) {
e.printStackTrace();
}
}
// Magic
public static String formatPhoneNumber(Object phone) throws Exception {
double p = 0;
if (phone instanceof String)
p = Double.valueOf((String) phone);
if (phone instanceof Integer)
p = (Integer) phone;
if (phone instanceof Float)
p = (Float) phone;
if (phone instanceof Double)
p = (Double) phone;
if (p == 0 || String.valueOf(p) == "" || String.valueOf(p).length() < 7)
throw new Exception("Paramenter is no valid");
String fot = phoneFormatD.format(p);
String extra = fot.length() > 10 ? fot.substring(0, fot.length() - 10) : "";
fot = fot.length() > 10 ? fot.substring(fot.length() - 10, fot.length()) : fot;
String[] arr = {
(fot.charAt(0) != '0') ? fot.substring(0, 3) : (fot.charAt(1) != '0') ? fot.substring(1, 3) : fot.substring(2, 3),
fot.substring(3, 6),
fot.substring(6)
};
String r = phoneFormatM.format(arr);
r = (r.contains("(0)")) ? r.replace("(0) ", "") : r;
r = (extra != "") ? ("+" + extra + " " + r) : r;
return (r);
}
}
Result will be
(809) 123-1234
+1 (809) 123-1234
(45) 123-1234
(1) 123-1234
123-1234
023-1234
java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at java.lang.Double.valueOf(Double.java:502)
at test.formatPhoneNumber(test.java:66)
at test.main(test.java:45)
java.lang.Exception: Paramenter is no valid
at test.formatPhoneNumber(test.java:78)
at test.main(test.java:50)
(809) 123-1232
Robert
10.1k14 gold badges65 silver badges115 bronze badges
answered Apr 25, 2016 at 15:34
DecimalFormat
doesn’t allow arbitrary text within the number to be formatted, just as a prefix or a suffix. So it won’t be able to help you there.
In my opinion, storing a phone number as a numeric value is wrong, entirely. What if I want to store an international number? Many countries use +
to indicate a country code (e.g. +1
for USA/Canda), others use 00
(e.g. 001
).
Both of those can’t really be represented in a numeric data type («Is that number 1555123 or 001555123?»)
answered Feb 25, 2011 at 7:50
Joachim SauerJoachim Sauer
299k57 gold badges552 silver badges611 bronze badges
2
You could use the substring and concatenation for easy formatting too.
telephoneNumber = "("+telephoneNumber.substring(0, 3)+")-"+telephoneNumber.substring(3, 6)+"-"+telephoneNumber.substring(6, 10);
But one thing to note is that you must check for the lenght of the telephone number field just to make sure that your formatting is safe.
Paul Richter
10.9k10 gold badges50 silver badges84 bronze badges
answered Feb 7, 2014 at 20:40
DiTapDiTap
3612 silver badges5 bronze badges
U can format any string containing non numeric characters also to your desired format use my util class to format
usage is very simple
public static void main(String[] args){
String num = "ab12345*&67890";
System.out.println(PhoneNumberUtil.formateToPhoneNumber(num,"(XXX)-XXX-XXXX",10));
}
output: (123)-456-7890
u can specify any foramt such as XXX-XXX-XXXX and length of the phone number , if input length is greater than specified length then string will be trimmed.
Get my class from here: https://github.com/gajeralalji/PhoneNumberUtil/blob/master/PhoneNumberUtil.java
answered Feb 26, 2016 at 11:05
Lalji GajeraLalji Gajera
4611 gold badge5 silver badges10 bronze badges
Pattern phoneNumber = Pattern.compile("(\d{3})(\d{3})(\d{4})");
// ...
Matcher matcher = phoneNumber(numberAsLineOf10Symbols);
if (matcher.matches) {
return "(" + matcher.group(1) + ")-" +matcher.group(2) + "-" + matcher.group(3);
}
xlm
6,41414 gold badges54 silver badges54 bronze badges
answered Jul 13, 2017 at 8:31
I’d have thought you need to use a MessageFormat rather than DecimalFormat. That should be more flexible.
answered Feb 25, 2011 at 7:45
String formatterPhone = String.format(«%s-%s-%s», phoneNumber.substring(0, 3), phoneNumber.substring(3, 6), phoneNumber.substring(6, 10));
answered Jun 18, 2014 at 14:41
1
Using StringBuilder
for performance.
long number = 12345678L;
System.out.println(getPhoneFormat(String.valueOf(number)));
public static String getPhoneFormat(String number)
{
if (number == null || number.isEmpty() || number.length() < 6 || number.length() > 15)
{
return number;
}
return new StringBuilder("(").append(number.substring(0, 3))
.append(") ").append(number.substring(3, 6))
.append("-").append(number.substring(6))
.toString();
}
answered Oct 29, 2018 at 13:42
trilogytrilogy
1,59814 silver badges31 bronze badges
Kotlin
val number = 088899998888
val phone = number.phoneFormatter()
fun String.phoneFormatter(): String { return this.replace("\B(?=(\d{4})+(?!\d))".toRegex(), "-") }
The result will be 0888-9999-8888
answered Jul 16, 2020 at 4:09
I used this one
String columValue = «1234567890
String number = columValue.replaceFirst(«(d{3})(d{3})(d+)», «($1) $2-$3»);
answered Mar 6, 2021 at 2:59