في Powershell كيف يمكنني تحويل سلسلة ذات "علامة" زائدة إلى رقم؟

StackOverflow https://stackoverflow.com/questions/300606

سؤال

أحتاج إلى تحويل السلاسل ذات العلامات اللاحقة الاختيارية إلى أرقام فعلية باستخدام 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 سيساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top