Регулярное выражение, использующее сочетание десятичных чисел и чисел в массиве - PullRequest
0 голосов
/ 17 декабря 2018

Пытаясь найти способ умножения чисел в приведенном ниже массиве

[120.98 7, 151.99 8, 141.39 4, 137.71 7, 121.27 6, 187.29 11] 

Попытка разбить их по пробелам с помощью разбиения и умножить их, однако возникают проблемы, есть идеи?

Задать вопросэто умножить два числа перед запятой.

1 Ответ

0 голосов
/ 17 декабря 2018

Это проблема, если ваш массив стоит так, как вы его показываете.Но если вы установите его сначала в формате String, вот решение:

myArray = "[120.98 7, 151.99 8, 141.39 4, 137.71 7, 121.27 6, 187.29 11]"
myStr = myArray[2..-1]  // to get rid of brackets
myStr = myStr[0..-2]
myStr = myStr.tokenize('[,]') // for parsing
println myStr

myStr.each{
    //println it
    first = it.split()[0].toDouble()
    second = it.split()[1].toDouble()

    println "$first * $second = " + first*second
}

Возможно, это не самый лучший или самый чистый способ, но он соответствует вашим требованиям, вот результат:

[20.98 7,  151.99 8,  141.39 4,  137.71 7,  121.27 6,  187.29 11]
20.98 * 7.0 = 146.86
151.99 * 8.0 = 1215.92
141.39 * 4.0 = 565.56
137.71 * 7.0 = 963.97
121.27 * 6.0 = 727.62
187.29 * 11.0 = 2060.19

Alex

...