我即将指向字符串中指定的数字并更改它们。给出了输入“ip_digit”和“pos”。“pos”指定要更改的数字,ip_digit 是数字的新值。
port = "1234"
ip["port"] = tonumber(("%s%s%s"):format(port:sub(1,pos-1), ip_digit, port:sub(pos+1)))
print(ip["port"])
.
Output:
1234
输出很好。现在我正在浏览终端中的数字并更改光标指向的数字。在 3. Digit a > 0 < 被插入并且不能更改。现在的输出是:
12304
当我尝试更改“0 位”时,不应该存在的 5 位被更改了。
这个怎么可能?我认为'port:sub(pos + 1)'可以走一远,但事实并非如此。
编辑:
ip_digit = com:read(nil) -- only accepted if 0-9
ip[port] = 1234
function replace_digit_in_IP(oct,pos)
if oct then -- issue is IP-Address
do_something()
else -- issue is PORT
port = tostring(ip["port"])
os.syslog(ip["port"]) -- output is '1234' in example
os.syslog(port) -- output is '1234' in example
ip["port"] = tonumber(("%s%s%s"):format(port:sub(1,pos-1), ip_digit, port:sub(pos+1)))
os.syslog(ip["port"]) -- output is 1234 or 12304 if 4th digit is altered.
end
cursorToNextBoxRight()--moves cursor one digit right in field, if there's none, move to digit at pos 1
os.syslog(string.format("x_index = %i, y_index = %i",x_index,y_index)) -- debug(cursor pos)
print_menu()--prints text to terminal
end
replace_digit_in_IP(nil,3)
可视化问题:
1 2 3 4 (port-output)
^ (cursor)
步骤“箭头键右”
1 2 3 4 (port-output)
^ (cursor)
step "input '9'" (数值输入也向右移动一位,改变后)
1 9 3 4 (port-output)
^ (cursor)
步骤“输入'9'”(向右移动)
1 9 9 0 4 (port-output)
^ (cursor)
步骤“输入'9'”(向右移动,无效所以移动到#1)
1 9 9 0 9 (port-output)
^ (cursor)