我有一个字符串,其中数据以此格式加载。 “float;#123456.0300000”我需要从中提取123456.03并修剪所有其他开始和结束字符。可能是我遗失的非常基本,请让我知道我该怎么做。谢谢。
答案 0 :(得分: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 :(得分:0)
为什么不这样做:
String s = "float;#123456.0300000";
int i = int.Parse(s.Substring(s.IndexOf('#') + 1));
我没有测试过这个,但它应该很接近。
假设格式没有改变,只需找到'#'后面的字符并将其转换为int,这样你就会丢失'。'之后的所有内容。
如果你需要它作为字符串,那么只需调用ToString方法。