Как умножить все числа в тексте

  • Автор темы Автор темы mig-z
  • Дата начала Дата начала

mig-z

Client
Регистрация
05.12.2014
Сообщения
311
Реакции
71
Баллы
28
Есть текст с числами и буквенными сокращениями. Нужно буквенные сокращения заменить на числа. Как посоветовал DAN из тг чата ЗП, для решения задачи надо найти сокращенные буквенные названия после цифр, заменить запятые на точки в числовых значениях перед ними и умножить там где М\млн\кк на 1000000, а там где лярд\ккк на 1000000000.

Подскажите пожалуйста, как это можно реализовать или хотя бы как перемножить несколько текстовых значений на цифры?

Пример текста который надо обработать:
2.3M 3м 3,5 млн 200кк 80 лямов 200m 360млн 410.000.000 420+кк 1.1ккк 405 млн 1B 1.24лярда 1.8ккк 400M 410,000,000

Текст, который должен получиться:
2300000 3000000 3500000 200000000 80000000 200000000 360000000 410000000 420000000 1100000000 405000000 1000000000 1240000000 1800000000 400000000 410000000
 
С твоей строкой работает)
110757

интересный результат)
 
С такими большими числами не работал) убери 0.############################### из стринга и будет в степени)
 

Вложения

  • 12331.zp
    12331.zp
    11,1 KB · Просмотры: 101
  • Спасибо
Реакции: mig-z
Шаблон прикрепил.

input: 2.3M 3м 3,5 млн 200кк 80 лямов 200m 360млн 410.000.000 420+кк 1.1ккк 405 млн 1B 1.24лярда 1.8ккк 400M 410,000,000

output: 2300000 3000000 3500000 200000000 80000000 200000000 360000000 410000000 420000000 1100000000 405000000 1000000000 1240000000 1800000000 400000000 410000000


1692914002053.png
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: mig-z

Супер! Работает, но только если встречается текст, который скрипт не знает, то выдает ошибку.
Например, это не работает:
Привет мир 2.3M я тестовое значение 3м 3,5 млн для 200кк 80 лямов тестирования кода 200m 360млн 410.000.000 420+кк 1.1ккк 405 млн 1B 1.24лярда 1.8ккк 400M 410,000,000 вот ))
Сможете подправить пожалуйста, чтобы заработало?
 
Супер! Работает, но только если встречается текст, который скрипт не знает, то выдает ошибку.
Например, это не работает:

Сможете подправить пожалуйста, чтобы заработало?
Ну так чтобы работало так, как надо, надо чуть-чуть усилий приложить, правда?
Открываем шаблон, жмём левой кнопочкой мышечки на кубик кода C#, видим там конструкцию Dictonary:
110837


Нажимаем на рубильник и включаем мозг. Слева аббревиатура, справа множитель. Добавляем ручками нужные аббревиатуры с нужным модулем. И, о чудо, заработает!
 
Ну так чтобы работало так, как надо, надо чуть-чуть усилий приложить, правда?
Открываем шаблон, жмём левой кнопочкой мышечки на кубик кода C#, видим там конструкцию Dictonary:
Посмотреть вложение 110837

Нажимаем на рубильник и включаем мозг. Слева аббревиатура, справа множитель. Добавляем ручками нужные аббревиатуры с нужным модулем. И, о чудо, заработает!
Да это то понятно с добавлением аббревиатур. Я говорил о том, чтобы оставить исходный текст, а заменить в переменной только аббревиатуры на числа. Чтобы получилось: Привет мир 2300000 я тестовое значение 3000000....
 
Ну так чтобы работало так, как надо, надо чуть-чуть усилий приложить, правда?
Открываем шаблон, жмём левой кнопочкой мышечки на кубик кода C#, видим там конструкцию Dictonary:
Посмотреть вложение 110837

Нажимаем на рубильник и включаем мозг. Слева аббревиатура, справа множитель. Добавляем ручками нужные аббревиатуры с нужным модулем. И, о чудо, заработает!
Да это то понятно с добавлением аббревиатур. Я говорил о том, чтобы оставить исходный текст, а заменить в переменной только аббревиатуры на числа. Чтобы получилось: Привет мир 2300000 я тестовое значение 3000000....
 
Зря наехал, ошибка не в обработчике аббревиатуры, в парсинге строки.
Ну да, махнул не разобравшись, у всех такое случается когда на скорую руку отвечаешь.
 
Ну да, махнул не разобравшись, у всех такое случается когда на скорую руку отвечаешь.
Короче, посидел поломал голову. Проблема в том, что в тексте есть лишние слова. Пытался оставить только те значения, которые подходят под значения из словаря, но это не сработало с 410,000,000 . Нужно как-то обрабатывать, наверное, значения, и приводить их к 1 стандартизации.. В целом, должна быть либо запятая для отделения тысячных, либо точка. Тогда это немного поправит ситуацию.
 
Ну да, махнул не разобравшись, у всех такое случается когда на скорую руку отвечаешь.
Прошу прощения. Очень много людей встречается, которые хотят всё на халяву совсем. Данный случай к такому точно не относится, он просто довольно сложный.
 
  • Спасибо
Реакции: mig-z

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)