2011-09-05 12 views
9

का उपयोग कर रहा सी # में एक स्ट्रिंग के अंत में रिक्त स्थान को जोड़ने के लिए कोशिश कर रहा हूँ:पैडिंग एक स्ट्रिंग PadRight विधि

Trip_Name1.PadRight(20); 

भी करने की कोशिश की:

Trip_Name1.PadRight(20,' '); 

इस में से कोई भी काम करने के लिए लगता है। हालांकि मैं किसी भी अन्य चरित्र के साथ स्ट्रिंग पैड कर सकते हैं। क्यूं कर?

मैं अधिक विशिष्ट किया जाना चाहिए था, यहाँ पूर्ण कोड है:

lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight(20,' '); 
+1

आपके परीक्षणों में 'Trip_Name1' क्या है? उन तरीकों का वापसी मूल्य क्या है (यानी * * क्या काम करता है "* मतलब नहीं है)? और आप जानते हैं कि ये विधियां 'Trip_Name1' के मान को संशोधित नहीं करेंगी, है ना? –

+1

क्या आप कोड नमूना प्रदान कर सकते हैं? वैसे, तार अपरिवर्तनीय हैं और आपको –

+0

पैडिंग के बाद परिणाम मान को पुन: असाइन करना होगा, मुझे और अधिक विशिष्ट होना चाहिए था, यहां पूर्ण कोड होना चाहिए: lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight (20, ''); – Bruce

उत्तर

23

स्ट्रिंग immutable, वे नहीं बदला जा सकता कर रहे हैं। PadRight स्ट्रिंग पैड का एक नया उदाहरण देता है, जिसे वह कहलाता है उसे नहीं बदला जाता है।

Trip_Name1 = Trip_Name1.PadRight(20,' '); 

वहाँ क्यों तार अपरिवर्तनीय हैं के रूप में this StackOverflow सवाल पर एक बड़ा चर्चा है: क्या आप चाहते हैं यह है।

संपादित:

इस में से कोई भी काम करने के लिए लगता है। हालांकि मैं किसी भी अन्य चरित्र के साथ स्ट्रिंग पैड कर सकते हैं।

क्या आप वास्तव में उपरोक्त उदाहरण की तरह इसे फिर से असाइन कर रहे हैं? अगर ऐसा है - तो और अधिक विस्तार के बिना मैं केवल निम्नलिखित के बारे में सोच सकते हैं:

  1. आप एक डेटाबेस में यह भंडारण कर रहे हैं और यह पुन: प्राप्त करने, सही सेटिंग्स के साथ कुछ डेटाबेस आप के लिए "ट्रिम" हो सकता है।
  2. आपके पास कहीं और तर्क है जो सफेद-रिक्त स्थान को ट्रिम कर रहा है। उपयोगकर्ता इनपुट से निपटने पर यह आम बात है।

संपादित 2:

मैं अधिक विशिष्ट

मैं अपने नामकरण सम्मेलनों है कि आप HTML के साथ काम कर रहे हैं के आधार पर एक जंगली अनुमान लेने के लिए जा रहा हूँ किया जाना चाहिए था/ASP.NET। ज्यादातर मामलों में, एचटीएमएल में - white space is collapsed। उदाहरण के लिए:

<div><a>Hello   World</a></div> 
<div><a>Hello World</a></div> 

a टैग की दोनों एक ही प्रस्तुत करना होगा, क्योंकि सफेद-अंतरिक्ष ढह जा रहा है। यदि आप वास्तव में HTML के साथ काम कर रहे हैं - यह संभवतः आपका कारण है और पैडिंग अन्य सभी पात्रों के लिए क्यों काम करता है। यदि आप मार्कअप के दृश्य-स्रोत को प्रस्तुत करते हैं - क्या इसमें अतिरिक्त सफेद रिक्त स्थान होते हैं?

यदि आप व्हाइटस्पेस रखना चाहते हैं, तो white-space नामक अपने तत्व पर एक सीएसएस शैली लागू करने का प्रयास करें और इसे pre पर सेट करें। उदाहरण के लिए:

<a style="white-space:pre">hello  world  </a> 

इससे सफेद-स्थान को संरक्षित किया जाएगा। ध्यान रखें कि इस तरह की सफेद जगह का उपयोग नुकसान है। ब्राउज़र उन्हें समान रूप से प्रस्तुत नहीं करते हैं, आदि। मैं इसे लेआउट उद्देश्यों के लिए उपयोग नहीं करता।सीएसएस और min-width जैसे कुछ का उपयोग करने पर विचार करें।

+0

@ user554134 - मैंने आपके अपडेट के आधार पर कुछ और संपादन किए हैं। – vcsjones

+0

धन्यवाद सर, व्हाइट-स्पेस: पहले चाल चल रही थी! – Bruce

+0

मेरे लिए भी काम नहीं करता है। एक ही समस्या वर str = INRECField.PadRight (11, '') + INRECDate? .ToString ("MMDDYY") + INRECModel.PadRight (12, '') + INRECSerial.PadRight (14, '') + INRECAccessCode पैडराइट (5, ''); str = str.PadRight (32, ''); – user2831855

4

ध्यान रखें, इस तरह से किसी भी स्ट्रिंग मैनिपुलेशन कार्यक्षमता के लिए काम नहीं करेगा क्योंकि स्ट्रिंग अपरिवर्तनीय है। वे मौजूदा उदाहरण को अपडेट करने के बजाय बस एक नई स्ट्रिंग लौटते हैं।

PadRight एक नया स्ट्रिंग कि में उन्हें एक निर्धारित यूनिकोड चरित्र के साथ सही पर padding एक निर्धारित कुल लंबाई के लिए द्वारा छोड़ा-संरेखित करता पात्रों इस स्ट्रिंग देता है।

string Trip_Name1 = Trip_Name1.PadRight(20,' '); 

संपादित करें:

आपका नियंत्रण समाप्त होने के रिक्त स्थान ट्रिमिंग जा रहा है। तो, पाठ के बजाए नियंत्रण के लिए पैडिंग सेट करने का प्रयास करें।

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