简体   繁体   中英

using concatenation on c#

What is the correct way to concatenate these elements?

Environment: C#-WinForm-Desktop.

In my app, I have a text file called config.ini . This file has values with this nomenclature:

csv_month_hour=value

The data are thus:

[csv]
csv_01_01=value // 24 hours a day in January
csv_01_02=value 
csv_01_03=value 
.
csv_02_01=value // 24 hours a day in February
csv_02_02=value 
csv_02_03=value 
.
// and so on

My app has this method called:

private void getMonthHour()
{
    DateTime Xdt = DateTime.Now;
    int Xmonth = Xdt.Month;
    int Xhour = Xdt.Hour;

    if (File.Exists("config.ini"))
    {
        IniFile ini = new IniFile("config.ini");

        m3h = Convert.ToDouble(confg.csv["csv_" + Xmonth.ToString + "_" + Xhour.ToString]);
    }
}

This method is called every seconds in timer_tick to check the month and time to use the corresponding value.

I need to know how to concatenate this: m3h = Convert.ToDouble(confg.csv["csv_"+Xmonth.ToString+"_"+Xhour.ToString]);

An example of the code would be:

if (Xmonth==1&&Xhour==1){m3h = Convert.ToDouble(confg.csv.csv_01_01);}
else if (Xmonth==1&&Xhour==2){m3h = Convert.ToDouble(confg.csv.csv_01_02);}  
else if (Xmonth==1&&Xhour==3){m3h = Convert.ToDouble(confg.csv.csv_01_03);}
// csv_month_hour in this case 01 is January.
else if (Xmonth==2&&Xhour==1){m3h = Convert.ToDouble(confg.csv.csv_02_01);}
// And so on, until December (12).   

Putting aside the invalid syntax/compiler error from your method calls in your code, I suspect you're building the string but can't get the leading 0 in front of digits 0-9. So when Xmonth and Xhour are less than 10, your string is being built as "csv_1_1" instead of your intended "csv_01_01" .

To instruct the ToString method to include a leading zero when needed, you can supply a custom numeric format string "00" (see the first entry in the link for "Zero placeholder").

Try using Xmonth.ToString("00") and Xhour.ToString("00") :

Monitor.malyt.m3h = Convert.ToDouble(confg.csv["csv_" + 
    Xmonth.ToString("00") + "_" + 
    Xhour.ToString("00")]);

This will output the values of Xmonth and Xhour with a single leading zero where needed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM