在C#中使用Regex将字符串解析为数组

乔凡尼·勒格兰德(Giovanni Le Grand)

我目前正在制作一个从串行端口接收字符串的C#应用​​程序,我需要解析此数据,以便可以对其进行处理。

通过发送的字符串的SerialPort格式如下:

*NTF,CTRL,SQL,OPEN,+,-66*NTF,CTRL,DBUSY,ON,+,-63*NTF,CTRL,DBUSY,OFF*NTF,CTRL,SQL,CLOSE*

现在我想知道如何将字符串分割为*符号上的各个部分,我本人对此进行了几次尝试,但无法弄清楚。

我所做的尝试是:

String[] tmp = data.ToString().Split('*');
foreach(String word in tmp)
{
    if (word.Contains(",80") || word.Contains(",81"))
    {
        COM_PORT_INFO_BOX.Text += word + "\r\n";
    }
}

这给了我:

NTF,CTRL,SQL,OPEN,+,-66
NTF,CT RL,DBUSY
,ON,+,-6
3
NTF,CT
RL,DBUSY
,OFF NTF,CT
RL,SQL,C
LOSE

我也尝试过:

var regex = new Regex('*'+".+"+'*');
var matches = regex.Matches(data);

但这给了我一个错误。

我要实现的目标:

格式化后的字符串如下所示:

NTF,CTRL,SQL,OPEN,+,-66
NTF,CTRL,DBUSY,ON,+,-63
NTF,CTRL,DBUSY,OFF
NTF,CTRL,SQL,CLOSE

编辑:

我已经通过这段代码解决了这个问题:

SerialPort sp = (SerialPort)sender;
data += sp.ReadExisting().ToString();
string[] tmp = data.Split(new char[] {'\u0002','\u0003'}, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in tmp)
{
    if (line.Contains(",80") || line.Contains(",81") || line.Contains(",RXVCALL"))
    {
        COM_PORT_INFO_BOX.Text += line.Substring(1) + "\r\n";
        data = "";
    }
}          
斯坦利

我知道您说过“最好使用regex”,但这是更干净的恕我直言String.Split

string s = "*blablablab,blablabla,blablabla,blablabla*blablabla,blabalbal,blablabla*";
string[] results = s.Split(new [] {'*'}, StringSplitOptions.RemoveEmptyEntries);

结果:

String[] (2 items)
----------------------------
blablablab,blablabla,blablabla,blablabla 
blablabla,blabalbal,blablabla 

要记住的一件事String.Split是,您的字符串定界符开头结尾,您将分别在结果数组的开头和结尾处得到空条目。添加StringSplitOptions.RemoveEmptyEntries参数将删除这些空条目,因此您只剩下每对星号之间的两个st。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串解析为C中的数组?

来自分类Dev

将字符串解析为数组

来自分类Dev

C#无法将JSON解析为字符串

来自分类Dev

使用JSON.NET将动态JSON字符串解析为C#中的字符串

来自分类Dev

如何使用继承/多态性将JSON字符串解析为C#对象?

来自分类Dev

从嵌套数组将数组解析为字符串

来自分类Dev

将嵌套数组字符串解析为数组

来自分类Dev

将多行字符串解析为数组

来自分类Dev

如何将字符串解析为php数组?

来自分类Dev

将多行字符串解析为数组

来自分类Dev

将RGB字符串解析为数组

来自分类Dev

如何将字符串解析为数组

来自分类Dev

将字符串查询解析为数组

来自分类Dev

将字符串数组解析为图表

来自分类Dev

PHP 将字符串解析为数组

来自分类Dev

在 c# 程序中使用 Regex.Replace 函数将字符串(数据)替换为“数据”?

来自分类Dev

如何在python中使用argparse parse_args将参数解析为字符串?

来自分类Dev

将JSON字符串解析为对象数组Objective C

来自分类Dev

将NSDictionary的JSON字符串解析为对象数组Object C

来自分类Dev

C将字符串解析为chars数组,而没有任何lib函数

来自分类Dev

使用AngularJs将JSON数组值解析为文本字符串

来自分类Dev

NSXML使用Swift将残破的字符串解析为数组

来自分类Dev

Javascript:使用自定义键名和值将字符串数组解析为对象

来自分类Dev

从数组中解析字符串以在csv中使用

来自分类Dev

在R中使用REGEX将值中的特定字符串提取为新列?

来自分类Dev

在R中使用REGEX将值中的特定字符串提取为新列?

来自分类Dev

C#将GMT日期字符串解析为DateTime

来自分类Dev

无法将字符串解析为C#中的确切DateTime

来自分类Dev

C#将字符串解析为Func <T,bool>

Related 相关文章

热门标签

归档