web-dev-qa-db-ja.com

NSStringにパーセント記号を追加する方法

数字の後に文字列にパーセント記号を付けたい。こんな感じ:75%。

どうすればこれを実現できますか。私は試した:

[NSString stringWithFormat:@"%d\%", someDigit];

しかし、私にとってはうまくいきませんでした。

443

NSString形式のパーセント記号のコードは%%です。これはNSLog()およびprintf()フォーマットにも当てはまります。

920
mouviciel

パーセント記号のエスケープコードは "%%"なので、コードは次のようになります。

[NSString stringWithFormat:@"%d%%", someDigit];

また、他のすべてのフォーマット指定子は、 概念的な文字列の記事 にあります。

136
binarybob

それが場合によっては助けになる場合、ユニコード文字を使用することは可能です:

NSLog(@"Test percentage \uFF05");
18
Resh32

受け入れられた答えはUILocalNotificationのために働きません。何らかの理由で、%%%%(4パーセント記号)またはUnicode文字「\uFF05」のみがこれに有効です。

要約すると、あなたの文字列をフォーマットするときは%%を使うことができます。ただし、文字列がUILocalNotificationの一部である場合は、%%%%または\uFF05を使用してください。

7
Jonny Ramos

%%の後に%@が続いた場合、NSStringはこれを試してみると奇妙なコードになるでしょう。

NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%", 
                 [textfield text], @"%%"]; 
6
user1483392

次のコードに従ってください。

 NSString *searchText = @"Bhupi"
 NSString *formatedSearchText = [NSString stringWithFormat:@"%%%@%%",searchText];

出力されます:%B​​hupi%

4
BHUPI

iOS 9.2.1、Xcode 7.2.1、ARCが有効

あなたが追加している文字列に他のフォーマット指定子なしで '%'をそれ自身でいつでも追加することができます。

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [stringTest stringByAppendingString:@"%"];
NSLog(@"%@", stringTest);

iOS7.0以降の場合

競合を引き起こす可能性がある他の文字への答えを拡張するには、使用することを選択できます。

- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters

ステップバイステップで書かれたそれはこのように見えます:

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [[stringTest stringByAppendingString:@"%"] 
             stringByAddingPercentEncodingWithAllowedCharacters:
             [NSCharacterSet alphanumericCharacterSet]];
stringTest = [stringTest stringByRemovingPercentEncoding];

NSLog(@"percent value of test: %@", stringTest);

手短に言うと

NSLog(@"percent value of test: %@", [[[[NSString stringWithFormat:@"%d", test] 
stringByAppendingString:@"%"] stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet alphanumericCharacterSet]] stringByRemovingPercentEncoding]);

すべてのオリジナルの貢献者に感謝します。お役に立てれば。乾杯!

0
serge-k