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

How to tell if a Text is made up of numbers? [closed]

Asked by
woodengop 1134 Moderation Voter
9 years ago

How would I personal check if a Textbox is contained with mathematical characters such as a number? If there isn't a way that would be fine, I'm asking such a question because I Technically don't know how to do it, and would help making a Passcode.

Locked by User#19524

This question has been locked to preserve its current state and prevent spam and unwanted comments and answers.

Why was this question closed?

2 answers

Log in to vote
2
Answered by
BlueTaslem 18071 Moderation Voter Administrator Community Moderator Super Administrator
9 years ago

tonumber is a function that converts a string into a number. It returns nil if the string does not exactly represent a number:

print( tonumber("12345") ) -- 12345
print( tonumber("12345d") ) -- nil
print( tonumber("d12345") ) -- nil
print( tonumber("123d45") ) -- nil

print(tonumber("1.2")) -- 1.2
print(tonumber("5.")) -- 5

It's pretty easy to tell if a string is a number:

if tonumber(text) ~= nil then
-- or equivalently

if tonumber(text) then

If may not be what you want, because it accepts things like hex and exponential notation (I think there's also a binary, and who knows what else):

print(tonumber("1.2e3")) -- 1200
print(tonumber("0x15")) -- 21

In that case, it's probably best to use a string pattern.

Patterns are strings which describe more general strings. For instance, "%d" describes any single digit. + means one-or-more of the previous character, so %d+ means one-or-more digits.

Note that this won't accept, e.g., 5.3 since . is not a digit.

If we want to match the whole string, we can do something like this:

if text:match("%d+") == text then

since match will return a piece of text that matches; we just have to ensure it's the whole thing.

Or, you can use the anchor patterns. ^ indicates the beginning of a string and $ the end.

if text:match("^%d+$") then

Ad
Log in to vote
1
Answered by 9 years ago

Yes, there is a way to see if a TextBox contains numbers instead of letters.

This would be done by seeing what tonumber() would return. If letters are the parameter of tonumber(), then it will return nil instead of numbers. Bellow is an example of what I mean:

if tonumber(VariableHoldingNumbersOrText) ~= nil then
    --Coding
end

Now, you probably don't want something like above, so you would use the UserInputService to make a check after the player is finished typing. If you would need an example for this, just comment and I'll make one but I'm pretty sure you are already capable.