我正在 .Net Core 中处理字符串。我有一个使用 :n
格式化的字符串,格式化后输出为 123 456,00
。我想断言格式化的字符串等于我希望的字符串,但我得到一个 Assert.Equal Failure()
并且问题出在空格字符中。在输出中它断言这两个空格是不同的。
这是我的代码:
public void Separator()
{
var str = string.Format("{0:n}", 123456);
Assert.Equal("123 456,00",str);
}
我还将格式化字符串中的空格字符与带有断言的常规空格字符进行了如下比较 Assert.Equal(' ',str[3]);
我得到预期值为0x00a
。
为什么会发生这种情况?如何在不使用 string.Format()
的情况下获得相同的字符?
最佳答案
您使用的区域性指定数字组分隔符是不同于空格的 ASCII 字符。我猜你在这里使用的是 ru-RU
,这意味着数字是 ASCII 字符 160,这意味着如果你刚刚键入一个空格,这些字符串将不匹配。
例如,您可以用区域性分隔符替换空格:
var currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
var stringToCompare = "123 456,00".Replace(
" ",
currentCulture.NumberFormat.NumberGroupSeparator);
Assert.Equal(stringToCompare, str);
关于c# - 如何在常规字符串上打印 .NET String.Format 空格字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45815995/