变量字符串的子字符串

时间:2012-01-17 16:39:28

标签: c# .net linq

我有以下返回的打印机:

{Ta005000000000000000000F     00000000000000000I     00000000000000000N     00000000000000000FS    00000000000000000IS    00000000000000000NS    00000000000000000}

好的,我需要在列表中保存部分退货。

e.g。

[0] "Ta005000000000000000000F" 
[1] "00000000000000000I"
[2] "00000000000000000N"
...

问题是字符数会有所不同。 A试图让它进入'空间',取得子串,但失败了......

有什么建议吗?

5 个答案:

答案 0 :(得分:6)

在单个空格中使用String.Split,并使用StringSplitOptions.RemoveEmptyEntries确保多个空格仅被视为一个分隔符:

var source = "00000000000000000FS    0000000...etc";
var myArray = source.Split(' ', StringSplitOptions.RemoveEmptyEntries);

@EDIT:摆脱大括号的一种优雅方式是将它们包含在Split中作为分隔符(感谢评论中的Joachim Isaksson):

var myArray = source.Split(new[] {' ', '{', '}'}, StringSplitOptions.RemoveEmptyEntries); 

答案 1 :(得分:2)

您可以使用正则表达式:

string input = "{Ta005000000000000000000F     00000000000000000I     00000000000000000N     00000000000000000FS    00000000000000000IS    00000000000000000NS    00000000000000000}";
IEnumerable<string> matches = Regex.Matches(input, "[0-9a-zA-Z]+").Select(m => m.Value);

答案 2 :(得分:1)

您可以使用string.split创建子字符串数组。拆分允许您指定多个分隔符,并在必要时忽略重复拆分。

答案 3 :(得分:0)

您可以使用“String”类的.Split成员并将部分拆分为您想要的部分。 样本将是:

string[] input = {Ta005000000000000000000F     00000000000000000I     00000000000000000N     00000000000000000FS    00000000000000000IS    00000000000000000NS    00000000000000000};
string[] splits = input.Split('     ');

Console.WriteLine(splits[0]); // Ta005000000000000000000F

等等。

答案 4 :(得分:0)

刚刚击球。不考虑包围的括号:

string printMsg = "Ta005000000000000000000F     00000000000000000I     
         00000000000000000N     00000000000000000FS    
         00000000000000000IS    00000000000000000NS    00000000000000000";
string[] msgs = printMsg.Split(' ').ForEach(s=>s.Trim()).ToArray();

可以工作。