2013-02-12 11 views
5

का उपयोग कर स्ट्रिंग को पैड कैसे सही करें, मैं रिक्त स्थान का उपयोग करके स्ट्रिंग को सही संरेखित करने में सक्षम होना चाहता हूं। मुझे stringWithFormat: विधि का उपयोग करने में सक्षम होना चाहिए।stringWithFormat

अभी तक मैंने अनुशंसित प्रारूप की कोशिश की है और यह काम नहीं कर रहा है: [NSString stringWithFormat:@"%[email protected]",@"test"]

मैं उम्मीद करता हूं कि यह एक स्ट्रिंग वापस लौटाएगा जिसमें छः रिक्त स्थान होंगे और उसके बाद "टेस्ट" होगा, लेकिन मुझे जो भी मिल रहा है वह बिना किसी रिक्त स्थान के "परीक्षण" है।

+0

सही * पैडिंग * के लिए मैं आमतौर पर केवल लंबे समय तक रिक्त स्थान जोड़ता हूं और फिर वांछित लंबाई तक छोटा हो जाता हूं। सही * संरेखण के लिए * आप कुछ ऐसा ही कर सकते हैं, केवल विपरीत छोर से छिड़काव करें। –

उत्तर

4

ऐसा प्रतीत होता है कि stringWithFormat%@ स्वरूप विनिर्देशक के आकार के अनुरोधों को अनदेखा करता है। हालांकि, %s विनिर्देशक सही ढंग से काम करता है:

NSString *test = @"test"; 
NSString *str = [NSString stringWithFormat:@"%10s", [test cStringUsingEncoding:NSASCIIStringEncoding]]; 
NSLog(@"'%@'", str); 

यह प्रिंट ' test'

+2

चूंकि 'एनएसएसटींग' के पास किसी भी यूनिकोड चरित्र के बारे में हो सकता है, इसलिए ASCII में परिवर्तित होने के बजाय '[परीक्षण UTF8String] 'का उपयोग करना बेहतर होगा। – rmaddy

+0

यह मेरे लिए काम किया। कोई विचार नहीं है कि यह '% @' के साथ क्यों काम नहीं करता है? – zachzurn

+1

@zachzurn यह एक शर्म की बात है कि ऐप्पल का '% @' प्रारूप विनिर्देशक का कार्यान्वयन आईईईई स्पेक से '% s' के मानक संशोधकों का सम्मान नहीं करता है। हालांकि यह एक आसान कामकाज है। बेशक एक और सामान्य समाधान जो कि किसी भी वस्तु के साथ काम करेगा, '[[someObject विवरण] UTF8String] 'का उपयोग करना होगा। – rmaddy

3

यह सी शैली स्वरूपण है। % nd का अर्थ है चौड़ाई एन है।

निम्नलिखित कोड की जांच करें।

NSLog(@"%[email protected]",[NSString stringWithFormat:@"%[email protected]",@"test"]); 
NSLog(@"%@",[NSString stringWithFormat:@"  %@",@"test"]); 
NSLog(@"%[email protected]", @"test"); 
NSLog(@"%10s", [@"test" cStringUsingEncoding:[NSString defaultCStringEncoding]]); 
NSLog(@"%10d", 1); 

NSString *str = @"test"; 
int padding = 10-[str length]; //6 
if (padding > 0) 
{ 
    NSString *pad = [[NSString string] stringByPaddingToLength:padding withString:@" " startingAtIndex:0]; 
    str = [pad stringByAppendingString:str]; 
} 
NSLog(@"%@", str); 
+0

'% @' के बजाय '% s' का उपयोग करना इतना आसान है। 'UTF8String' का उपयोग करके 'एनएसएसटींग' को सी-स्ट्रिंग में कनवर्ट करें। '% @' चौड़ाई विनिर्देश का सम्मान करता है। – rmaddy

+1

आप '[NSString string]' को '@" "' से बदल सकते हैं। – rmaddy

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