扣除十进制数字后面的所有字符,前导0' s

时间:2018-02-28 08:58:41

标签: c# string output

如果我有输入字符串, input 有三个或更多小数,我希望字符串由单独的if-loop处理。

我已经为此创建了以下控制台程序,其中输入if-loop如果(第一个约束)有一个小数点,.在字符串中(第二个)约束)如果小数位数是三或更多。

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "0.065";
            string output;

            Console.WriteLine(input.ToString());  // (1)
            Console.WriteLine(input.ToString().IndexOf("."));  // (2)
            Console.WriteLine(input.ToString().Substring(input.ToString().IndexOf("."))); // (3)

            if (Convert.ToInt32(input.IndexOf('.')) != -1 && 
            Convert.ToInt32(input.Substring(input.IndexOf('.') + 1).Length) >= 3)
            {
                output = input.Substring(input.IndexOf('.') + 1);
                Console.WriteLine(Convert.ToInt32(output));
            }
                Console.ReadLine();
        }
    }
}

这产生预期结果,即

(1)打印0.065

(2)打印1

(3)打印.065

和(4)打印3

我的问题是,当我删除硬编码字符串值input = "0.065"并将其替换为

input = Row["Price"].ToString();

其中Row["Price"].ToString();是XML文件中的值,其值也为0.065我从控制台获得以下打印:

(1)收益率0.065

(2)收益率-1(由于存在.,因此应为1)

(3)收益率0.065(应为.065

和(4)未打印,因为未满足if constraints

有谁知道为什么会这样?我是C#的新手,但我认为,由于input在两种情况下属于string类型,所以不应该有任何区别吗?特别是当我将ToString()应用于我的新string input时?

1 个答案:

答案 0 :(得分:1)

执行,后,将.替换为该字符串中的input = Row["Price"].ToString();

替换功能为input = Row["Price"].ToString().Replace(",", ".");