0

私はすでにこの質問を見てきましたが、解決策はありませんでした。これが問題です。

po [myNumberFormatter stringFromNumber:myNumber]

出力 --> (id) $4 = 1.500,00

p (char) [(NSString *)[myNumberFormatter stringFromNumber:myNumber] characterAtIndex:1]

出力 --> (char) $5 = '\xa0'

po [(NSString *)[myNumberFormatter stringFromNumber:myNumber] stringByReplacingOccurrencesOfString:@"\xa0" withString:@" "]

出力 --> (id) $6 = 1.500,00

ただし、画面上では、値1.500,00が1 500,00のように見えることに注意してください。しかし、文字列内で '\xa0' 文字を @" " に変換する方法はありますか?

この次の解決策は既に機能していますが、含まれていないものをすべて空白文字に変換するという問題があります。

po [(NSString *)[myNumberFormatter stringFromNumber:myNumber] stringByReplacingSequenceOfCharactersInSet:(NSCharacterSet *)[[NSCharacterSet characterSetWithCharactersInString:@"0123456789,."] invertedSet] with:@" "]

編集--------------

以下の答えを試してみましたが、間違っていると思いました。

po [(NSString *)[numberFormatter stringFromNumber:theNumber] stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "] 

それでも同じ結果が得られました (\xa0 文字はまだ削除されていません)。しかし、デバッガーに配置せず、代わりにコード内の NSString に配置すると、正解が格納され、\xa0 文字が削除されました。デバッガーのログだけに頼るべきではないと思います。

4

2 に答える 2

5
NSString *str = // string to cleanup
str = [str stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "];

\u00a0 は、コンパイル時に実際のノーブレーク スペースに置き換えられます。

于 2012-10-27T00:04:38.857 に答える
1

私の意見では、「\u00a0」を置き換えることは一般的な解決策ではありません.next timeサーバーが他のUnicode文字を送信する可能性があり、コードがそれを処理できないためです。また、「\u00a0」は文字列ではありません.PFBは、サーバーの応答から数字のみを除外するために使用したコードです。

phoneNumber= "000 \U00a0950";

phoneNumber に数字が必要だったので、次のように書きました。

self.phoneNumber = [NSMutableString stringWithCapacity:[[_storeDetails objectForKey "phone"] length]]; //which  is 000 \U00a0950

NSCharacterSet *numberCharacterSet = [NSCharacterSet decimalDigitCharacterSet]; 

 for (int i = 0; i < [[_storeDetails objectForKey "phone"] length]; i++)
 { 
 unichar characterOfPhoneNumber = [[_store objectForKey "phone"] characterAtIndex:i]; 
   if ([numberCharacterSet characterIsMember:characterOfPhoneNumber]) 
   { [self.phoneNumber appendString:[NSString stringWithFormat "%c",characterOfPhoneNumber]];
 } 
} 

//上記のコードでは、各文字を解析し、それが数値かどうかを確認し、それを配列に追加したため、配列は Unicode フリーです。PS:\U00a0 はキャラクターです

于 2013-03-25T09:03:27.123 に答える