2010-01-25 37 views
35

我正在格式化數字以字符串使用以下格式字符串「##。##」,在某些時候我需要將這些數字字符串(1 234 567)變成類似1234567的東西。我試圖刪除空字符卻發現char 160在我的源代碼中意味着什麼?

value = value.Replace(" ", ""); 

出於某種原因,並串保持1 234 567望着我發現,[1]

值爲160

我想知道後面的字符串是什麼值160的意思是?

+2

有內置到Windows發現這些類型的Unicode代碼點的一個不錯的小程序。使用CHARMAP.EXE – 2010-01-25 14:06:19

+0

我試圖運行它,但我不能在Windows 2008 – gyurisc 2010-01-25 15:30:16

+0

@HansPassant你表示,2010年小程序? – asyncwait 2015-04-15 16:57:43

回答

14

字符代碼160 

2

這是使用Char.IsWhiteSpace去除列爲空格的任何字符的快速(且相當可讀)的方式:

StringBuilder sb = new StringBuilder (value.Length); 
foreach (char c in value) 
{ 
    if (!char.IsWhiteSpace (c)) 
     sb.Append (c); 
} 
string value= sb.ToString(); 

由於dbemerlin指出,如果你知道你將只需要數從您的數據,會更好地利用Char.IsNumber或更嚴格Char.IsDigit

StringBuilder sb = new StringBuilder (value.Length); 
foreach (char c in value) 
{ 
    if (char.IsNumber(c)) 
     sb.Append (c); 
} 
string value= sb.ToString(); 

如果你需要數字和小數點分隔符,這樣的事情應該足夠了:

StringBuilder sb = new StringBuilder (value.Length); 
foreach (char c in value) 
{ 
    if (char.IsNumber(c)|c == System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) 
     sb.Append (c); 
} 
string value= sb.ToString(); 
+0

小數點分隔符如何?將Char.IsDigit()和Char.IsNumber()跳過嗎? – gyurisc 2010-01-25 15:31:10

+0

@ AskAboutGadgets.com,是IsNumber和IsDigit爲小數點分隔符返回false。我添加了一個新示例 – 2010-01-25 15:59:05

+0

我寧願「||」在條件代替「|」爲了可讀性。 – Xantix 2015-04-28 16:32:49

10

value.Replace(Convert.ToChar(160).ToString(),"")

+0

value.Replace(((char)160).ToString(),「」)用於較少的輸入 – cryss 2014-06-12 19:27:22

0

解決方案具有擴展的方法:

public static class ExtendedMethods 
{ 
    public static string NbspToSpaces(this string text) 
    { 
     return text.Replace(Convert.ToChar(160), ' '); 
    } 
} 

,它可以與此代碼中使用:

value = value.NbspToSpaces(); 
0

用魯本斯已經發布的正則表達式方法替換所有空字符(這是提問者想要做的)不是首選方法嗎?

Regex.Replace(input, @"\p{Z}", ""); 

還是什麼快報提示:

Regex.Replace(input, @"\p{Zs}", ""); 

這裏的區別在於,\ p {Z}替換任何空格或無形的隔膜,而\ p {ZS}代替空格字符,也就是看不見,但確實佔據了空間。 你可以在這裏閱讀(科統一分類):

http://www.regular-expressions.info/unicode.html

使用正則表達式有隻需要一個命令也替換正常的空格和一些不僅不間斷空格像解釋的好處上面的答案。

如果性能是去那當然其他方法應考慮的方式,但這種超出範圍在這裏。

相關問題