2016-02-28 65 views
1

这是我的动态字符串:如何读取动态字符串并将每个密钥字符串值存储为变量?

String a= "SourceFilePath:C:\Users\Anuj\Desktop\Anuj Tamrakar Working Folder, BackUpFilePath:C:\Users\Anuj\Desktop\installer, SyncPath:C:\Users\Anuj\Desktop\PSI, Password:3SMpUGoJpIJdWwRDXau+OQ==, NumberOfTimes:2, Time0:10:10 AM, Time1:10:10 PM" 

我需要阅读的字符串的内容和需要存储每个键及其coressponding值代入变量。我需要一个像

var SourceFilePath = "C:\Users\Anuj\Desktop\Anuj Tamrakar Working Folder"; 
var BackUpFilePath="C:\Users\Anuj\Desktop\installer" 
var SyncPath="C:\Users\Anuj\Desktop\PSI" 
var Password="3SMpUGoJpIJdWwRDXau+OQ==" 
var NumberOfTimes=2 
var Time0=10:10 AM 
var Time1=10:10 PM 

输出这一部分是动态的:

var NumberOfTimes:2 
var Time0:10:10 AM 
var Time1:10:10 PM 

如果我在我的字符串文件有NumberOfTimes:4。我会有4个时间值,即Time0,Time1,Time2和Time3。所以我需要将这4个时间值存储到4个变量中

回答

0

我在控制台应用程序中试过这样并且工作正常。以下是我的解决方案。

static void Main(string[] args) 
    { 

     String a = @"SourceFilePath:C:\Users\Anuj\Desktop\Anuj Tamrakar Working Folder, BackUpFilePath:C:\Users\Anuj\Desktop\installer, SyncPath:C:\Users\Anuj\Desktop\PSI, Password:3SMpUGoJpIJdWwRDXau+OQ==, NumberOfTimes:2, Time0:10:10 AM, Time1:10:10 PM"; 

     Dictionary<string, string> processedString = ProcessString(a); 

     //Here you can set the values to variable accessing it from the Dictionary 
     var SourceFilePath = processedString["SourceFilePath"]; 
     var BackUpFilePath = processedString["BackUpFilePath"]; 
     var SyncPath = processedString["SyncPath"]; 
     var Password = processedString["Password"]; 
     var NumberOfTimes = Convert.ToInt32(processedString["NumberOfTimes"]); 

     // And for the dynamic variables like Time01, Time02 I recommend you to create a list which holds all the time components. 
     // Because creating a variable on the fly will be more complex for your requirement and is not necessary at this moment. 
     //So you can do this 
     var TimeComponents = processedString.Where(x => x.Key.StartsWith("Time")).Select(x => x).ToList(); 
     Console.ReadLine(); 
    } 

而分割字符串和创建字典的过程如下。

public static Dictionary<string, string> ProcessString(string toProcess) 
    { 
     Dictionary<string, string> processedString = new Dictionary<string, string>(); 
     var eachSubString = toProcess.Split(','); 

     foreach (var subStr in eachSubString) 
     { 
      var keyValue = subStr.Trim().Split(new char[] { ':' }, 2); 
      processedString.Add(keyValue[0], keyValue[1]); 
     } 

     return processedString; 
    } 

这里是调试器的屏幕截图

enter image description here

让我知道,如果这有助于。

+1

Thanks Reddy :) It Worked –

0

您可以使用字典对象。

将字符串输入分开,然后循环通过变量键值对拆分:。 将密钥和值存储在字典中。

您不需要声明每个变量,但可以通过键在字典中查找它。

0

它必须是像下面的东西。

// you can also fill an array dynamically 
var NumberOfTimes=["10:10 AM","10:11 AM","10:12 AM"] 
//count of stored items in array 
NumberOfTimes.length 
//in order to print or use in some where else 
NumberOfTimes.forEach(function(e,i){ 
//do somethings 
}); 
相关问题