如何将我的String拆分为3个分隔的字符串(不管SubString Length)?

时间:2014-02-25 20:14:48

标签: c# sql .net ibm-midrange

我在字符串中存储字符串。一个例子是:

ssnDateTime = "123456789|20140225|114528"

我试图将每个子字符串存储到它自己的变量中,如下所示:

string SSN  = ssnDateTime.Substring(0, 9);
string Date = ssnDateTime.Substring(ssnDateTime.Length - 15, 8);
string Time = ssnDateTime.Substring(19);

这对我的10个测试记录中的5个都很好,但是第6个的时间值为91514,导致我的3个字符串:

SSN = 123456789
Date = |2014022
Time = 91514

当我的应用程序尝试运行INSERT INTO Library.TrackingTable (SSN, DATE, TIME) VALUES ("123456789", "|2014021", "91514")时,AS400会自然地抱怨日期值中的|

无论子字符串的长度如何,我可以通过分隔符从主字符串中获取每个SSN,Date和Time值的方法是什么(当时间值比6个字符短时,可以防止上述问题) ?

SSN自然会始终为9个字符,而日期将为20140225的8个字符格式,但时间可以是5个或6个字符,具体取决于值。

2 个答案:

答案 0 :(得分:6)

似乎非常适合string.Split

 ssnDateTime = "123456789|20140225|114528"
 string[] subs = ssnDateTime.Split('|');
 string SSN  = subs[0];
 string Date = subs[1];
 string Time = subs[2];

string.Split返回一个字符串数组,该字符串在作为参数传递的分隔符处拆分原始字符串。

当然这段代码不会检查生成的字符串数组是否真的包含三个元素,在生产环境中检查是否像

一样
 if(subs.Length > 0
     date = subs[1];
 if(subs.Length > 1)
    Time = subs[2];

应该是强制性的......

答案 1 :(得分:4)

string[] parts = "123456789|20140225|114528".Split('|');

http://www.dotnetperls.com/split