2009-09-24 28 views
3

問候。將逗號加上與.NET 2.0文本字符串中的十進制數字

想象一下你得到了一個字符串(從某個地方你不能控制)。在該字符串中是十進制數字。您希望將逗號(即:將1234567.89轉換爲1,234,567.89)添加到該數字,同時保持整個字符串不變。數字前面的貨幣符號會有所不同,但逗號格式不必因文化而異。

有沒有簡單的方法在.NET中做到這一點?

如果不是一個簡單的方法,我會進一步詳細瞭解我的計劃。我們可以使用string.Substring()來獲取數字,因爲它總是在一些靜態文本之間。例如:

我們的字符串:

string s1 = "Blah Blah Blah. Total price: $1234567.89; Blah Blah Blah Blah" 

我們可以在價格像這樣得到:

int start = s1.IndexOf("Total price: ") + 13; 
int length = s1.IndexOf(";") - start; 
string trim = s1.Substring(start, length); 

抓住貨幣字符,離開休息:

char curr = trim[0]; 
string sAmount = s1.Substring(1, s1.Length); 

現在我們可以格式化我們的小數:

decimal dAmount; 
if (decimal.TryParse(sAmount, out dAmount)) 
{ 
    string formattedPrice = curr + dAmount.ToString("N2"); 
    Console.WriteLine(formattedPrice); 
} 

現在我可以只插入結果字符串返回到我原來的字符串,它應該去。寫這個問題的關鍵是這對我來說是非常討厭,我希望找到一個更好的方法來處理這個問題。

謝謝你的時間。我會在接下來的一個小時內刷新這一點,並會在這段時間內選擇一個答案。

回答

5
string input = "Blah Blah Blah. Total price: $1234567.89; Blah Blah Blah Blah"; 

string output = Regex.Replace(input, @"\d+(\.\d\d)?", match => decimal.Parse(match.Value).ToString("N")); 
+0

絕對完美的格式化字符串。謝謝! – JoeB 2009-09-24 18:47:47

1

簡單的方法是使用正則表達式查找和替換。

2

嘗試是這樣的:

String.Format("Total Price: {0:C}", dAmount); 

編輯:對不起,太多的咖啡,讀快。以上是如何將逗號/貨幣符號插入數字的答案。

回答有關重新插入新的號碼到老的字符串的問題,正則表達式很可能是最好的識別字符串中的數字,並更換它,你做你的格式化後。我想我需要看到更多有效輸入的例子來幫助實際的正則表達式。

2

您可能想看看System.Globalization命名空間。

您可以修剪開始,這不是數字的拖尾字符,然後根據你的System.Globalization.CultureInfo.CurrentCulture.NumberFormat

相關問題