Scripting Helpers is winding down operations and is now read-only. More info→
Log in to vote

How to trigger if string = any number?

Asked by 8 years ago

Im trying to make a script that's activated when a player chats, I know how to control triggers of strings = letters, but how would I trigger based on any given value: Example (not meant to be serious)

if string == ANYVALUE then

1 answer

Log in to vote
Answered by
Goulstem 8144 Badge of Merit Moderation Voter Administrator Community Moderator
8 years ago

So you want to see if a string has ANY numbers in it?

One way to do this is use the tonumber function. This function turns any given string into a number, if the given string has non-numerical characters in it then the tonumber function will return nil, so it's suggested that you don't use this method.

local str = '420'

print(tonumber(str)) -->420
print(type(tonumber(str))) --> number

--If it's not soley a number

local str = 'Four20'

print(tonumber(str)) --> nil
print(type(tonumber(str))) --> nil

    The 'type' function returns what datatype the given arguments are(:
    type('') --> string
    type({}) --> table
    type(function() end) --> function

Another way to do this is to use the string.gmatch function. This function lets you use string patterns to return a matching string. If you use this function in a generic for, then you can use %d+ as a pattern detector.. this pattern detector gets any numbers - and the + operator gets grouped numbers(:

local str = 'H3llo my n4m3 15 G0u15t3m'
local matches = {}

for i in str:gmatch('%d+') do

print(unpack(matches)) -->3 4 3 15 0 15 3

And if i'm going overkill on this and all you need is to see if a string is equal to a wanted number then just compare the string to a preset number variable using tostring

local num = 420
local str = '420'

if tonumber(str) == num then

--And vise-versa(;

if tostring(num) == str then

Answer this question