अच्छा, चलिए इसे ऊपर से नीचे ले जाएं। सबसे पहले, यह है क्योंकि आप एक संदर्भ त्रुटि मिल गया है नाकाम रहने है:
...
for k = 1, 3 do
newint = string.sub(mystring, -k*v) -- What is 'mystring'?
end
...
सबसे अधिक संभावना आप i
वहाँ, mystring
नहीं होना चाहता हूँ।
दूसरा, mystring
को i
के साथ बदलकर त्रुटियों को ठीक करेगा, यह अभी भी सही तरीके से काम नहीं करेगा।
> =reformatint(100)
,100
> =reformatint(1)
,000
यह स्पष्ट रूप से सही नहीं है। ऐसा लगता है कि आप जो करने की कोशिश कर रहे हैं वह स्ट्रिंग के माध्यम से जाता है, और कॉमा के साथ नई स्ट्रिंग का निर्माण करता है। लेकिन कुछ समस्याएं हैं ...
function reformatint(i)
local length = string.len(i)
for v = 1, math.floor(length/3) do
for k = 1, 3 do -- What is this inner loop for?
newint = string.sub(mystring, -k*v) -- This chops off the end of
-- your string only
end
newint = ','..newint -- This will make your result have a ',' at
-- the beginning, no matter what
end
return newint
end
कुछ पुनर्विक्रय के साथ, आप एक ऐसा कार्य प्राप्त कर सकते हैं जो काम करता है।
function reformatint(integer)
for i = 1, math.floor((string.len(integer)-1)/3) do
integer = string.sub(integer, 1, -3*i-i) ..
',' ..
string.sub(integer, -3*i-i+1)
end
return integer
end
ऊपर दिया गया कार्य सही ढंग से काम करता प्रतीत होता है। हालांकि, यह काफी दृढ़ है ... शायद इसे और अधिक पठनीय बनाना चाहते हैं।
function comma_value(amount)
local formatted = amount
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k==0) then
break
end
end
return formatted
end
uff, मैंने वेबपेज से मिस्टिंग युक्त बिट को फिसल दिया, जाहिर है कि मैं इसे बाहर निकालने के लिए भूल गया था। जैसा कि यह पता चला है, मेरी Google खोज बहुत गलत थी। मैं आपको धन्यवाद देना चाहता हूं, और मैं बहुत गहराई से देखूंगा कि string.sub() कैसे संचालित होता है। मुझे उम्मीद है कि अब तक मेरी मूर्खता मुझे कुछ सीखने देगी। – Hultin
@ हल्टिन: खुद को देखने की आवश्यकता नहीं है - हम सभी गलतियां करते हैं, और वे कभी-कभी मूर्ख होते हैं। इस तरह हम सीखते हैं। और हाँ, 'स्ट्रिंग को समझना।उप() 'एक सार्थक प्रयास है - यह वास्तव में अन्य भाषाओं में सबस्ट्रिंग कार्यों की तुलना में थोड़ा अलग है। इसके अलावा, StackOverflow में आपका स्वागत है! – voithos