Как массово в тексте умножить цифры?

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
Добрый день друзья. Есть разного типа строк с размерами дюймы. количество может отличаться

Пример: Перед: 8 | Макушка: 5.75 |Бока: 5.25 | Затылок: 1.5 и т п...

Как мне массово изменить дюймы на см? 1 дюйм равно 2.54 см

Думал разделить все, потом убрать лишнее и умножить все, а затем собрать нужную строку, но это долго, может есть какой то алгоритм который будет искать такие цифры в тексте и умножать?
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 447
Баллы
113






код переделать под зенку и вуаля)

C#:
using System;

class Program
{
    static void Main()
    {
        // Входной массив значений в дюймах
        double[] inchesArray = { 10.5, 15.25, 20.75 };

        // Вызываем метод ConvertInchesToCentimeters для каждого значения в массиве
        double[] centimetersArray = ConvertInchesToCentimeters(inchesArray);

        // Выводим результаты
        for (int i = 0; i < inchesArray.Length; i++)
        {
            Console.WriteLine(inchesArray[i] + " дюймов = " + centimetersArray[i] + " сантиметров");
        }
    }

    static double[] ConvertInchesToCentimeters(double[] inchesArray)
    {
        double[] centimetersArray = new double[inchesArray.Length];

        for (int i = 0; i < inchesArray.Length; i++)
        {
            // Формула конвертации: 1 дюйм = 2.54 сантиметра
            centimetersArray[i] = inchesArray[i] * 2.54;
        }

        return centimetersArray;
    }
}
 

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
не очень шарю в программировании, но данный код вроде только работает на прямую с цифрами, а у меня числа в тексте. Иначе, воспользовался бы простым умножением)
 

DrunkDeath

Client
Регистрация
24.12.2014
Сообщения
589
Благодарностей
402
Баллы
63
не очень шарю в программировании, но данный код вроде только работает на прямую с цифрами, а у меня числа в тексте. Иначе, воспользовался бы простым умножением)
Ну если костыльным способом то дёргать все числа в список, по строчно из списка брать, умножать на 2,54 и с заменой обратно в текст
 

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
Ну если костыльным способом то дёргать все числа в список, по строчно из списка брать, умножать на 2,54 и с заменой обратно в текст
так и хотел сделать, но там видов 30 размеров, продеться для каждого вида все индивидуально сделать в итоге превратиться в огромный проект(

Видел один способ ищет цифры в тексте и изменяет все, а тут надо умножиться всего лишь на 2,54
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
Думаю, вопрос не в этом немного заключался.
По поводу того, как взять цифры, примерно так, наверное.
C#:
var text = "Перед: 8 | Макушка: 5.75 |Бока: 5.25 | Затылок: 1.5";
var spl = text.Split(new string[] {"|"}, StringSplitOptions.RemoveEmptyEntries);
var pattern = @"\b\d+(\.\d+)?\b";
var totalText = new List<string>();
foreach (var s in spl)
{
    var n = double.Parse(Regex.Match(s,pattern).Value.ToString(), CultureInfo.InvariantCulture);
    var sm = n * 2.54;
    var total = Regex.Replace(s, pattern, sm.ToString());
    totalText.Add(total);
}

return string.Join(" | ", totalText);
В директивы using и общий код это:
C#:
using System.Globalization;
Но, наверняка, кто-то предложит вариант изящнее.
 
  • Спасибо
Реакции: art22

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 447
Баллы
113
не очень шарю в программировании, но данный код вроде только работает на прямую с цифрами, а у меня числа в тексте. Иначе, воспользовался бы простым умножением)
получите все числа с текста, с помощью парсинга регуляркой

C#:
[-+]?[0-9]*\.?[0-9]+


а дальше как гпт чат предложил, код который выше
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
Код изящнее, с использованием разработки openai
C#:
string input = "Перед: 8 | Макушка: 5.75 |Бока: 5.25 | Затылок: 1.5";
Regex regex = new Regex(@"\b\d+(\.\d+)?\b");
string output = regex.Replace(input, m => (double.Parse(m.Value, CultureInfo.InvariantCulture) * 2.54).ToString("F2"));
return output;
 
  • Спасибо
Реакции: art22

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
  • Спасибо
Реакции: n0n3mi1y

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113

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