我有一個字符串,其中數據以這種格式加載。 「float;#123456.0300000」從中我只需要提取123456.03並修剪所有其他的起始和結束字符。可能是我很想念,請讓我知道我該怎麼做。謝謝。在C#中提取字符串中的小數部分
0
A
回答
1
如果格式總是float;#
,後跟要位,那麼這是相當簡單:
// TODO: Validate that it actually starts with "float;#". What do you want
// to do if it doesn't?
string userText = originalText.Substring("float;#".Length);
// We wouldn't want to trim "300" to "3"
if (userText.Contains("."))
{
userText = userText.TrimEnd('0');
// Trim "123.000" to "123" instead of "123."
if (userText.EndsWith("."))
{
userText = userText.Substring(0, userText.Length - 1);
}
}
但你真正需要的格式有信心 - 那不會有別的您需要刪除等
特別是:
- 什麼是你想要支持的小數位數的最大值是多少?
- 可能有數千個分隔符?
- 小數點分隔符是否總是一個週期?
- 該值可以爲負值嗎?
- 是否明確帶領
+
有效? - 您是否需要處理科學格式(1.234e5等)?
- 可能會有尾隨字符?
- 尾隨字符可能包含數字嗎?
- 你需要處理非ASCII數字嗎?
如果您需要比上面的代碼更復雜的任何東西,您可能會希望使用正則表達式,但在進一步深入研究之前,您會盡可能多地瞭解可能的輸入信息。 (我強烈建議你能想到的每輸入一個形式編寫單元測試。)
+0
這可以消除起始字符,但是我們怎樣才能在不需要的末尾刪除額外的零。我會在我的程序中繼續進行所有這些附加問題的檢查。謝謝。 – svs
+0
@svs:啊,對不起 - 我錯過了那一點。編輯。這裏突出顯示了幾個邊緣案例。 –
0
爲什麼不只是做:
String s = "float;#123456.0300000";
int i = int.Parse(s.Substring(s.IndexOf('#') + 1));
我沒有測試過這一點,但它應該是接近。
假設格式不變,只需在'#'後面找到字符並將它變成一個int,這樣就可以在'。'之後丟失所有內容。
如果你需要它作爲一個字符串,那麼只需調用ToString方法即可。
相關問題
- 1. 在python中提取部分字符串
- 2. 在Golang中提取部分字符串?
- 3. 在BASH中提取部分字符串
- 4. 提取字符串c的部分#
- 5. 提取部分字符串從一個字符串在java中
- 6. 提取部分字符串
- 7. 提取部分字符串
- 8. 提取部分字符串?
- 9. 如何在C++中提取一部分字符串?
- 10. C獲取字符串中的字符串的一部分
- 11. 在C#提取字符串的specifc部
- 12. 從字符串中提取部分字符串?
- 13. 從C字符串中提取「整數」和「小數」?
- 14. 提取從逗號分隔字符串字符串的SQL Server中的部分
- 15. 從EXCEL中提取字符串中的數字和小數
- 16. 提取字符串的一部分
- 17. 字符串jQuery的提取部分
- 18. 提取字符串的第一部分
- 19. 提取字符串的一部分
- 20. 提取字符串的一部分
- 21. 提取長字符串的一部分。
- 22. 提取名的某部分字符串
- 23. PHP提取字符串的一部分
- 24. 提取部分的PHP字符串
- 25. 在C++中將字符串劃分爲更小的字符串
- 26. 分裂在HTML中提取字符串
- 27. 在C++中部分字符串搜索
- 28. 如何獲取C#中的字符串[]數組的一部分
- 29. 在C中提取子字符串#
- 30. 提取字符串在C#中
「所有其他的起始和結束字符」 - 你已經給出了一個「float;#」的起始字符串,但它會一直是這樣嗎?你對這種格式有多瞭解? –
是的,我得到的字符串在啓動時總是「漂浮;#」,離我的測試很遠。但最終用戶只能看到小數部分。 – svs