في Powershell كيف يمكنني تحويل سلسلة ذات "علامة" زائدة إلى رقم؟
-
08-07-2019 - |
سؤال
أحتاج إلى تحويل السلاسل ذات العلامات اللاحقة الاختيارية إلى أرقام فعلية باستخدام Powershell.
السلاسل المحتملة هي:
- 1000-
- 323+
- 456
أحاول استخدام System.Int.TryParse مع NumberStyles منallowTrailingSign، لكن لا يمكنني معرفة كيفية جعل System.Globalization.NumberStyles متاحًا لـ Powershell.
المحلول
يحرر:وفقًا لاقتراح Halr9000
$foo = "300-";
$bar = 0;
$numberStyles = [System.Globalization.NumberStyles];
$cultureInfo = [System.Globalization.CultureInfo];
[int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);
نصائح أخرى
[System.Globalization.NumberStyles]::AllowTrailingSign
يجب أن أشير أيضًا إلى أنه عندما أتعامل مع التعدادات بشكل عام، يمكنني أحيانًا القيام بذلك عن طريق كتابة سلسلة.على سبيل المثالفي هذه الحالة، وضعت للتو
"AllowTrailingSign"
ملاحظة أخيرة، عند اختبار التعداد لجميع القيم الممكنة، استخدم السطر:
[System.Globalization.NumberStyles] | gm -static
إليك طريقة أفضل للحصول على قيم التعداد:
$type = [System.Globalization.NumberStyles]
[enum]::GetValues($type)
إذا كنت متأكدًا من أن العلامات يمكن أن تكون - أو +، فيمكن أن يساعدك String.Replace.
إذا كنت تقصد أن 323- يجب أن يعيد -323، فإن التحقق من الإشارة وضربها في -1 سيساعد.