2013-11-26 58 views
3

的變量數比方說,我有串這樣的:動態改變NSStringWithFormat

NSString *myString = [NSString stringWithFormat:@"%@%@%@%@%@",variable1,variable2,variable3,variable4,variable5]; 

如果variable2nil我不希望在我的字符串,像這樣:

NSString *myString = [NSString stringWithFormat:@"%@%@%@%@",variable1,variable3,variable4,variable5]; 

問題

有沒有辦法做到這一點,而沒有大量的if語句?

+2

你可以有一個數組由這些變量並重復他們在檢查如果那是零或沒有,然後他們追加到可變的字符串。 –

+0

@AdilSoomro謝謝!這將是你的解決方案的一半,一半trojanfoe的:) – Mikael

+0

你歡迎,以及如果你採取另一半建議有可變的字符串,我已經建議。 ;) –

回答

4

不要使用[NSString stringWithFormat:],而是創建一個NSMutableString,並根據需要追加的字符串:

NSMutableString *s = [[NSMutableString alloc] init]; 
if (variable1) 
    [s appendString:variable1]; 
if (variable2) 
    [s appendString:variable2]; 
if (variable3) 
    [s appendString:variable3]; 
if (variable4) 
    [s appendString:variable4]; 
if (variable5) 
    [s appendString:variable5]; 

(對不起,我錯過了你點「沒有大量的if聲明」,但我不認爲它可以避免)。

+0

不錯的一個。這太容易了:)。謝謝一堆! – Mikael

+0

關於if的。這種方式使得它比使用NSStringWithFormat的情況下容易得多,所以它非常好。 – Mikael

+0

我需要更多地關注NSMutableString - 這非常出色。 – malaki1974

1

最簡單的方法是使用壓縮的三元運算符用空字符串替換空值。使用您的示例的略有刪節版本:

NSString *myString = [NSString stringWithFormat:@"%@%@",variable1 ?: @"",variable2 ?: @""];