簡體   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