给出以下字符串
38051211)JLRx(0x04>0x01):JL_PAGE_INFO(0x63,0x00,0x01,0x03,0x00,0x73,0x00,0x00,0x0A,0x01,0x01,0xF2,0x01)
如何拆分它,以便可以在列表视图列中使用每个拆分?
例如,我可以在:处使用split,但是接下来我需要在下一个处进行拆分(拆分后的每个值都使用,。
任何建议将不胜感激,它是我如何添加第二和第三等类似内容的我
{
if (line.Contains("JLTx"))
{
string[] JLTx = line.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
listView1.Items.Add(JLTx[0]);
listView1.Items[listView1.Items.Count - 1].SubItems.Add(JLTx[1]);
}
}
因此,使用以下正则表达式
Regex regex = new Regex(@"(.*)JLTx\((.*)\):(JL_[(A-Z)_]*)\((.*)\)");
我似乎无法在:分裂,因为没有任何一场比赛。我要去哪里错了
谢谢
答案 0 :(得分:0)
如果拆分字符串的第二项-JLTx [1]-始终为JL_PAGE_INFO(...),我将尝试这样做:
string[] mystring = JLTx[1].Replace("JL_PAGE_INFO(","").Replace(")","")Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:0)
正如其他人指出的那样,您可以使用很多选项将其解析为某些标头友好格式。如果您的JL_PAGE_INFO对于所有输入都是稳定的,则上述@Johns答案将起作用。您也可以使用正则表达式。这在很大程度上取决于输入数据的稳定性。这是一个使用字符串函数创建您描述的标头列表的示例。
static IEnumerable<string> Tokenize(string input)
{
if (string.IsNullOrEmpty(input))
yield break;
if (')' != input[input.Length - 1])
yield break;
int colon = input.IndexOf(':');
string pageData = input.Substring(colon + 1);
if (string.IsNullOrEmpty(pageData))
yield break;
int open = pageData.IndexOf('(');
if (colon != -1 && open != -1)
{
yield return input.Substring(0, colon+1);
foreach (var token in pageData.Substring(open+1, pageData.Length - (open + 1) - 1).Split(','))
yield return token;
}
}