2011-12-28 34 views
11

Ví dụ, tôi cần NSString có ít nhất 8 ký tự .... thay vì sử dụng một vòng lặp để thêm các khoảng trống bên trái trên này, là có anyway để làm điều đó?Làm thế nào để pad NSString với không gian?

Examples: 

Input: |Output: 
Hello  | Hello 
Bye  |  Bye 
Very Long |Very Long 
abc  |  abc 
+0

Tôi không chắc chắn tôi theo dõi? –

+0

có thể trùng lặp của [Chuỗi đệm sang trái với mục tiêu c] (http://stackoverflow.com/questions/964322/padding-string-to-left-with-objective-c) – Abizern

Trả lời

17

Dưới đây là một ví dụ về cách bạn có thể làm điều đó:

int main (int argc, const char * argv[]) { 
    NSString *str = @"Hello"; 
    int add = 8-[str length]; 
    if (add > 0) { 
     NSString *pad = [[NSString string] stringByPaddingToLength:add withString:@" " startingAtIndex:0]; 
     str = [pad stringByAppendingString:str]; 
    } 
    NSLog(@"'%@'", str); 
    return 0; 
} 
+4

Tại sao bạn làm theo cách này? Đây là những gì 'stringByPaddingToLength: withString: startsAtIndex:' hiện. Bạn chỉ có thể loại bỏ mọi thứ sau khi khai báo 'str' và thay vào đó làm' NSLog (@ "% @", [str stringByPaddingToLength: thêm withString: @ "" startingAtIndex: 0]) ' – Chuck

+0

@Chuck Vâng, đó là của tôi ý tưởng ban đầu. Thật không may, sự hiểu biết của tôi là miếng đệm phương pháp đệm chỉ ở bên phải, ghi đè các ký tự từ chỉ mục trên. Nói cách khác, nếu bạn bắt đầu ở số không, bạn sẽ nhận được một chuỗi tám không gian. – dasblinkenlight

+0

Ah, bạn nói đúng, tôi rõ ràng không đọc câu hỏi một cách chính xác. Đừng bận tâm tôi. – Chuck

8

Tôi chỉ làm điều gì đó như thế này:

NSLog(@"%*c%@", 14 - theString.length, ' ', theString); 

Hơn nữa, 14 là chiều rộng mà bạn muốn.

+2

Điều này bị hỏng, những gì heck hiện rằng thậm chí có nghĩa là gì? –

+0

Sẽ ổn nếu độ dài được truyền tới int và chuỗi ngắn hơn 14. –

-2

nếu bạn cần câu trả lời tương tự trong một phương pháp, tôi phải tạo một câu trả lời để sử dụng trong các dự án của mình. mã gốc của dashblinkenlight

- (NSString *) LeftPadString: (NSString*) originalString LengthAfterPadding: (int)len paddingCharacter: (char) pad 
{ 
int add = (int) (len - originalString.length); 

NSString* paddingCharString = [NSString stringWithFormat:@"%c" , pad]; 

if (add > 0) 
{ 
    NSString *pad = [[NSString string] stringByPaddingToLength:add withString: paddingCharString startingAtIndex:0]; 
    return [pad stringByAppendingString:originalString]; 
} 
else 
    return originalString; 
} 
+0

'- (NSString *) stringByPaddingToLength: (NSUInteger) newLength withString: (NSString *) padString startsAtIndex: (NSUInteger) padIndex;' –

Các vấn đề liên quan