result = 0;
exc = null;
+ NumberFormatInfo nfi = Thread.CurrentThread.CurrentCulture.NumberFormat;
if (s == null) {
if (!tryParse)
return false;
}
- c = s [i];
- if (c == '+')
- i++;
- else if (c == '-'){
+ if (String.Compare (s, i, nfi.PositiveSign, 0, nfi.PositiveSign.Length) == 0)
+ i += nfi.PositiveSign.Length;
+ else if (String.Compare (s, i, nfi.NegativeSign, 0, nfi.NegativeSign.Length) == 0) {
sign = -1;
- i++;
+ i += nfi.NegativeSign.Length;
}
for (; i < len; i++){
Assert.AreEqual ("254", def, "ToString(G)");
}
+
+ [Test]
+ public void ParseRespectCurrentCulture ()
+ {
+ var old = Thread.CurrentThread.CurrentCulture;
+ var cur = (CultureInfo)old.Clone ();
+
+ NumberFormatInfo ninfo = new NumberFormatInfo ();
+ ninfo.NegativeSign = ">";
+ ninfo.PositiveSign = "%";
+ cur.NumberFormat = ninfo;
+
+ Thread.CurrentThread.CurrentCulture = cur;
+
+ int val = 0;
+
+ try {
+ Assert.IsTrue (int.TryParse (">11", out val), "#1");
+ Assert.AreEqual (-11, val, "#2");
+ Assert.IsTrue (int.TryParse ("%11", out val), "#3");
+ Assert.AreEqual (11, val, "#4");
+ } finally {
+ Thread.CurrentThread.CurrentCulture = old;
+ }
+ }
}
}