2011-02-23 23 views
111

मैं एक स्ट्रिंगकैसे एक स्ट्रिंग में सभी प्रमुख शून्यों को दूर करने के

00020300504 
00000234892839 
000239074 

कैसे मैं अग्रणी शून्य से छुटकारा पा सकते हैं, जिससे कि मैं केवल इस

20300504 
234892839 
239074 

ध्यान दें कि होगा है उपरोक्त संख्या यादृच्छिक रूप से उत्पन्न हुई थी।

+0

क्या ये तीन अलग-अलग तार हैं, या एक स्ट्रिंग प्रत्येक नंबर को अलग करने वाली न्यूलाइन के साथ है? मैंने देखा कि आपके प्रश्न को संपादित करते समय आपके पास
'संख्याएं अलग-अलग थीं; क्या वे वास्तव में आपकी स्ट्रिंग का हिस्सा हैं? – erisco

उत्तर

340

ltrim:

$str = ltrim($str, '0'); 
+2

+1 दूसरे पैरामीटर के बारे में नहीं पता था, धन्यवाद! – Czechnology

+2

^_ ^, धन्यवाद lonesomeday, यह मेरी समस्या हल करता है जो मैं सबसे अधिक 5 घंटे के लिए सोच रहा था ... – Gerald

+1

आपने मेरा दिन बनाया! – Xavier

9
(string)((int)"00000234892839") 
+0

मैंने अभी एक '(int) "00009384783473" '(यादृच्छिक संख्या) की कोशिश की और मेरा परिणाम 2147483647 था। अगर मैंने इसे फ्लोट के रूप में डाला, तो ऐसा लगता है कि यह ठीक काम करता है। अजीब – JamesHalsall

+0

मैनुअल का कहना है कि "एक पूर्णांक का आकार प्लेटफॉर्म-निर्भर है, हालांकि लगभग दो अरब का अधिकतम मूल्य सामान्य मूल्य है (यह 32 बिट्स हस्ताक्षरित है)" – llamerr

+1

अजीब नहीं है। PHP में इंटीग्रर्स 2^31 तक जाते हैं, जो 2147483647 है। किसी भी बड़ी संख्या के लिए, आपको लोन्सोमेडे के स्ट्रिंग-आधारित समाधान का उपयोग करना होगा। – awm

-2

आप यह मानते हुए एक रन पर तीन या अधिक शून्य की चाहते हैं हटा दिया जाना चाहिए और अपने उदाहरण से एक स्ट्रिंग है:

$test_str ="0002030050400000234892839000239074"; 
    $fixed_str = preg_replace('/000+/','',$test_str); 

आप रेगुलर एक्सप्रेशन से कर सकते हैं यदि आपकी धारणाएं बंद हैं तो आपको पैटर्न की आवश्यकता होती है।

यह सहायता?

+0

गलत, क्षमा करें। यह स्ट्रिंग के बीच से '000' भी काट देगा। –

2

मुझे नहीं लगता कि preg_replace उत्तर है .. पुराना धागा लेकिन आज इसे ढूंढने के लिए होता है। ltrim और (int) कास्टिंग विजेता है।

<?php 
$numString = "0000001123000"; 
$actualInt = "1123000"; 

$fixed_str1 = preg_replace('/000+/','',$numString); 
$fixed_str2 = ltrim($numString, '0'); 
$fixed_str3 = (int)$numString; 

echo $numString . " Original"; 
echo "<br>"; 
echo $fixed_str1 . " Fix1"; 
echo "<br>"; 
echo $fixed_str2 . " Fix2"; 
echo "<br>"; 
echo $fixed_str3 . " Fix3"; 
echo "<br>"; 
echo $actualInt . " Actual integer in string"; 

//output 

0000001123000 Origina 
1123 Fix1 
1123000 Fix2 
1123000 Fix3 
1123000 Actual integer in tring 
+0

यदि आप रेगेक्स की शुरुआत में^ऑपरेटर जोड़ते हैं, तो यह एक वैध समाधान है। – twicejr

2

Regex पहले से ही प्रस्तावित किया गया था, लेकिन नहीं सही ढंग से:

<?php 
    $number = '00000004523423400023402340240'; 
    $withoutLeadingZeroes = preg_replace('/^0+/', $number) 
    echo $withoutLeadingZeroes; 
?> 

उत्पादन तो है: Regex पर

4523423400023402340240 

पृष्ठभूमि: ^ संकेतों स्ट्रिंग की शुरुआत और + संकेत संकेत पिछले या किसी भी पिछले संकेत में से कोई नहीं। इसलिए, regex ^0+ स्ट्रिंग की शुरुआत में सभी शून्यों से मेल खाता है।

7

एक और सुझाव की तरह, को छोड़कर मिटा नहीं होगा वास्तविक शून्य: क्यों लोग इस तरह के एक सरल बात को प्राप्त करने के बहुत जटिल तरीकों का उपयोग कर रहे हैं

if (ltrim($str, '0') != '') { 
    $str = ltrim($str, '0'); 
} else { 
    $str = '0'; 
} 
7

पता नहीं है! और regex? वाह!

यहां आपको सबसे आसान और सबसे आसान तरीका है (जैसा कि यहां बताया: https://nabtron.com/kiss-code/):

$a = '000000000000001'; 
$a += 0; 

echo $a; // will output 1 
+1

यह एक सरल समाधान की तरह प्रतीत होता है, लेकिन यह स्ट्रिंग के किसी भी आकार को अन्य उत्तरों की तरह संभाल नहीं करता है। आप एक स्ट्रिंग से एक पूर्णांक में कनवर्ट कर रहे हैं और फिर एक स्ट्रिंग के रूप में वापस आ रहे हैं - केवल स्ट्रिंग को छोटा करने के लिए सरल। –

+1

दिलचस्प है, लेकिन मुझे नहीं पता कि यह प्रकार रूपांतरणों के साथ सबसे अच्छा समाधान है या नहीं। – jonathanbell

3

आप अपने चर में "+" जोड़ सकते हैं,

उदाहरण:

$numString = "0000001123000"; 
echo +$numString; 
+0

यह आसान और आसान है –

-1

अजय कुमार सबसे सरल इको + $ numString प्रदान करता है; मैं इन का उपयोग करें:

echo round($val = "0005"); 
echo $val = 0005; 
    //both output 5 
echo round($val = 00000648370000075845); 
echo round($val = "00000648370000075845"); 
    //output 648370000075845, no need to care about the other zeroes in the number 
    //like with regex or comparative functions. Works w/wo single/double quotes 

वास्तव में किसी भी गणित समारोह "स्ट्रिंग" से नंबर लेने के लिए और इतना है कि यह व्यवहार करेगा। यह किसी भी regex या तुलनात्मक कार्यों की तुलना में बहुत आसान है। मैंने देखा कि php.net में, जहां याद नहीं है।

संबंधित मुद्दे