For faster navigation, this Iframe is preloading the Wikiwand page for Модуль:Math/tonumber.

Модуль:Math/tonumber

Материал из Википедии — свободной энциклопедии

Документация

Этот модуль содержит функции для конвертации строк в числа.

Вызываемые функции

integer

((#invoke:math/tonumber|integer|…))

Возвращает первое целое положительное число, найденное в строке.

Входное значение Результат
2014 2014
[[2014]] 2014
[[2014 год|2014]] 2014
[[31 декабря]] [[2014]] 31
Як-42 42

Используется в шаблонах, когда надо.

quantity

((#invoke:math/tonumber|quantity|…))

Возвращает количественное значение из строки.

Входное значение Результат
100 000 100000
100 тыс. чел. 100000
100,9 тыс. чел. 100900
100,90 тыс. чел. 100900
100,90 тыс. чел. (2017) 100900
100 000 ± 10 100000

Используется в шаблонах, когда надо.

year

Возвращает последнее из чисел, найденных в строке, подходящее по формату в качестве года.

  • Приоритет отдаётся 4-значному числу, начинающемуся на 1 или 2
  • Иначе будет возвращено 3-значное число
  • Если в строке есть несколько чисел одной длины, то будет выбрано последнее из них
((#invoke:math/tonumber|year|…))
((#invoke:math/tonumber|year|…|default=…))
Входное значение Результат
2014 2014
910 910
[[2014]] 2014
[[2014 год|2014]] 2014
[[31 декабря]] [[2014]] 2014
2014—2018 2018
Як-42
[[2316 год до н. э.]] -2316
100,90 тыс. чел. (2017) 2017

Используется в шаблонах ((Категория по дате)) и ((Год появления)).

Тесты

1 тестов из 26 провалено.

test_integer
Тест Ожидаемое значение Фактическое значение
✔ (( #invoke:Math/tonumber|integer | 2014 )) 2014 2014
✔ (( #invoke:Math/tonumber|integer | 910 )) 910 910
✔ (( #invoke:Math/tonumber|integer | 14 )) 14 14
✔ (( #invoke:Math/tonumber|integer | 1 )) 1 1
✔ (( #invoke:Math/tonumber|integer | -100 )) 100 100
✔ (( #invoke:Math/tonumber|integer | [[2014]] )) 2014 2014
✔ (( #invoke:Math/tonumber|integer | [[2014 год|2014]] )) 2014 2014
✔ (( #invoke:Math/tonumber|integer | [[31 декабря]] [[2014]] )) 31 31
✔ (( #invoke:Math/tonumber|integer | [[2316 год до н. э.]] )) 2316 2316
✔ (( #invoke:Math/tonumber|integer | 22 марта 14 года )) 22 22
✔ (( #invoke:Math/tonumber|integer | Як-42 )) 42 42
test_year
Тест Ожидаемое значение Фактическое значение
✔ (( #invoke:Math/tonumber|year | 2014 )) 2014 2014
✔ (( #invoke:Math/tonumber|year | 910 )) 910 910
✔ (( #invoke:Math/tonumber|year | 14 )) 14 14
✔ (( #invoke:Math/tonumber|year | 1 )) 1 1
N (( #invoke:Math/tonumber|year | -100 )) 100
✔ (( #invoke:Math/tonumber|year | 10 год до н. э. )) -10 -10
✔ (( #invoke:Math/tonumber|year | 1 до н.э )) -1 -1
✔ (( #invoke:Math/tonumber|year | [[10 год до н. э.]] )) -10 -10
✔ (( #invoke:Math/tonumber|year | [[2014]] )) 2014 2014
✔ (( #invoke:Math/tonumber|year | [[2014 год|2014]] )) 2014 2014
✔ (( #invoke:Math/tonumber|year | [[31 декабря]] [[2014]] )) 2014 2014
✔ (( #invoke:Math/tonumber|year | 2014—2018 )) 2018 2018
✔ (( #invoke:Math/tonumber|year | [[2316 год до н. э.]] )) -2316 -2316
✔ (( #invoke:Math/tonumber|year | 22 марта 14 года ))
✔ (( #invoke:Math/tonumber|year | Як-42 ))
--[[

This module convert strings to numbers.

]]
local p = {}

-- Get first integer number from string.
function p.integer( frame )
    local s = frame.args[1]

	s = string.gsub( s, '<[^<>]+>', '' ) -- strip HTML tags
    s = string.gsub( s, '[^0-9]', ' ' )
    s = mw.text.trim( s )
    s = mw.text.split( s, ' ' )[1]
    
    return tonumber( s )
end

-- Get number from quantity (e.g. from Wikidata).
function p.quantity( frame )
	local s = frame.args[1]

	s = string.gsub( s, '<[^<>]+>', '' ) -- strip HTML tags
    s = string.gsub( s, ' ', '' )

    s = string.gsub( s, 'тыс', '000' )
    s = string.gsub( s, 'млн', '000000' )
    s = string.gsub( s, 'млрд', '000000000' )

    s = string.gsub( s, ',(%d%d%d)000', '%1' )
    s = string.gsub( s, ',(%d%d)000', '%10' )
    s = string.gsub( s, ',(%d)000', '%100' )

    s = string.gsub( s, '±.*$', '' )

    s = string.gsub( s, '[^0-9]', ' ' )
    s = mw.text.trim( s )

    s = mw.text.split( s, ' ' )[1]

    return tonumber( s )
end

-- Get year value from string.
function p.year( frame )
    local n = nil
    local cat = frame.args['cat']

	-- 'году' or 'года'
    local yearForm = 'году'
    if frame.args['form'] and frame.args['form'] ~= '' then
    	yearForm = frame.args['form']
	end

    local s = frame.args[1]
	s = string.gsub( s, '<[^<>]+>', '' ) -- strip HTML tags

    local isBce = string.match( s, 'до%sн\.%s?э' )
    s = string.gsub( s, 'год%sдо%sн\.%s*э\.?', '' )
    s = string.gsub( s, 'до%sн\.%s*э\.?', '' )

	-- Get first 3- or 4-digit integer number from string.
    local sParts = string.gsub( s, '[^0-9]', ' ' )
    sParts = mw.text.trim( sParts )
    sParts = mw.text.split( sParts, ' +' )
    for k = #sParts, 1, -1 do
	    v = sParts[k]
        if string.match( v, '^[12]%d%d%d$' ) then
            n = tonumber( v )
            break
        end
	end

	-- The entire string is a number.
	if not n then
	    s = string.gsub( s, '[%[%]]', '' )
	    s = mw.text.trim( s )
		if string.match( s, '^%d%d?%d?%d?$' ) then
			n = tonumber( s )
		end
	end

	-- Generate category
	if n then
	    if isBce then
	    	if cat then
	    		return '[[К:' .. cat .. ' ' .. n .. ' ' .. yearForm .. ' до н. э.]]'
	    	end
	    	n = -n
	    else
	    	if cat then 
	    		return '[[К:' .. cat .. ' ' .. n .. ' ' .. yearForm .. ']]'
	    	end
	    end
	end

    return n or frame.args['default']
end

return p
{{bottomLinkPreText}} {{bottomLinkText}}
Модуль:Math/tonumber
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?