繁体   English   中英

如何在常规字符串上打印.NET String.Format空格字符?

[英]How to print .NET String.Format space character on a regular string?

我正在研究.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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM