سؤال

أريد أن أغير NSNumberformatter من عرض الأرقام السالبة مع أقواس حول لهم وضع علامة ناقص في الجبهة (أو أيا كان مترجم المعيار).

سأفترض أنني يمكن أن تفعل هذا مع setNegativeFormat:

ولكن القراءة أبل أوه دقيق جدا مستندات أنا تركت الخدش رأسي:


setNegativeFormat:

يحدد شكل المتلقي يستخدم لعرض القيم السلبية.

- (void)setNegativeFormat:(NSString *)aFormat

المعلمات aFormat سلسلة التي تحدد شكل القيم السلبية.

توافر المتاحة في نظام التشغيل اي فون 2.0 و في وقت لاحق.

انظر أيضا – negativeFormat

أعلن في NSNumberFormatter.ح


ما هي خيارات aFormat?!?هيا دوك الكتاب ، وصلة هنا قتلك ؟

تحرير:ما يستحق هنا الإعلان:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

من المهم بالنسبة لي أن تحتفظ مترجمة رمز العملة العشرية مهما كانت.حتى [currencyFormatter setNegativeFormat:@"-#,##0.00"] ربما لن تعمل كعملة مفقود و 2 عشرية لا يمكن أن يفترض على جميع العملات.

هل كانت مفيدة؟

المحلول

إذا كنت نلقي نظرة على "تنسيق السلاسل" في قسم تنسيق البيانات برمجة دليل الكاكاو:

شكل سلسلة يستخدم تنسيق أنماط من Unicode التقنية القياسية #35 (هذه الإشارة إلى الإصدار tr35-6;formatters لنظام التشغيل Mac OS X v10.4 استخدام الإصدار tr35-4).

تحرير:

إذا كنت ترغب في تعيين سلسلة تنسيق على أساس العملات ، يمكنك استخدام ¤ الشخصية, على سبيل المثال:

[formatter setFormat:@"¤#,##0.00"];

هذا إضافة رمز العملة الحالية التعريب في مكان ¤ حرف.

وبالتالي فإن تطبيق نفس المفهوم السلبي سلسلة التنسيق:

[formatter setFormat:@"-¤#,##0.00"];

وهذا ينطبق أيضا رمز العملة في مكان ¤ الحالي التعريب.

نصائح أخرى

حسنا, لذلك الجواب الذي لدي هو:

[currencyFormatter setNegativeFormat:@"-¤#,##0.00"];

المفتاح هو هذا whatzit?حرف "¤".أي فكرة ما يطلق عليه ؟ أي شخص ؟ ولكنه يمثل عملة محلية في شكل سلاسل...

في هذه الحالة لا تبحث عن شكل NSString. انظر هنا للحصول على شكل سلسلة التفاصيل.

إذا كنت تريد السلبية من 12,345.67 لعرض كما -12,345.67, ثم أعتقد أن الصحيح NSString القيمة @"-#,##0.00"

كما لاحظ الجملة التالية في الوثيقة مرتبطة أعلاه:

إذا كنت لا تحديد شكل القيم السلبية ، الشكل المحدد عن القيم الإيجابية استخدام سبقت من علامة ناقص (-).

تحرير:
تحديث 10.4 و بعد: هنا هو نسخة PDF تصف السلوك في 10.4 و بعد
و كما يرتبط من تلك الوثيقة هنا البيانات المطلوبة الشكل 10.4 و بعد.
من هذه الوثيقة ، يبدو السلسلة الصحيحة قد تكون: @"-#,##0.##"

جميع الإجابات المقدمة نفترض أن العملة إلى منزلتين عشريتين و أيضا يستخدم الفواصل كما ألف فصل.من الواضح أن هناك عدد من العملات التي لا تتوافق مع هذا المعيار ، http://en.wikipedia.org/wiki/Decimal_mark, لذا استخدم تقنية التالية

    NSString * formattedBalance = [currencyFormatter stringFromNumber:balance];
    if([formattedBalance rangeOfString:@"("].location != NSNotFound ) {
        formattedBalance = [NSString stringWithFormat:@"-%@",[[formattedBalance stringByReplacingOccurrencesOfString:@")" withString:@"" ]stringByReplacingOccurrencesOfString:@"(" withString:@"" ]];
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top