我尝试从 AT+CMGR=X 返回的字符串中获取信息(其中 x 是 SIM 卡上的消息索引)
字符串是
\r\n+CMGR: \"REC UNREAD\",\"TrueID/TMN\",\"\",\"12/07/24,14:48:11+07\"
\r\n
003400310036003000300037003800350035003A0E170E230E390E210E310E190E190E35
0E4800200041002F00430020003000380030003900350037003200360036003800200E220E2D
0E140E400E070E340E190E040E070E400E2B0E250E370E2D002000340030002E0030003000200E1A0E320E17
\r\n\r\n
OK\r\n
此字符串中有有用的信息。
REC READ 用于消息状态 SMS 的日期 SMS OK 消息的内容
并且知道我们可以使用 .NET Regular 组提取此信息。
我找到了有用的线程,但我无法将该线程中的模式调整为适合我的字符串的正确模式。
String pattern = @"(?<a>\+CMGL):[ ](\d*),\""
(?<b>[^\""]*)"",
(?<c>\d*),(?<d>\d*),\""
(?<e>\+\d*)"",(?<f>\d*),\""
(?<g>\d*\/\d*\/\d*,\d{2}:\d{2}:\d{2}\-\d{2})\"",\""
(?<h>\d{2}\/\d{2}\/\d{2}),?\r\n,?
(?<i>\d{2}:\d{2}:\d{2}\-\d{2})\"",
(?<j>\d*)";
Regex rx = new Regex(pattern, RegexOptions.IgnorePatternWhitespace);
Match m = rx.Match(testWord);
while (m.Success)
{
Console.WriteLine(m.Groups["a"].Value);
Console.WriteLine(m.Groups["b"].Value);
Console.WriteLine(m.Groups["c"].Value);
Console.WriteLine(m.Groups["d"].Value);
Console.WriteLine(m.Groups["e"].Value);
Console.WriteLine(m.Groups["f"].Value);
Console.WriteLine(m.Groups["g"].Value);
Console.WriteLine(m.Groups["h"].Value);
Console.WriteLine(m.Groups["i"].Value);
Console.WriteLine(m.Groups["j"].Value);
Console.WriteLine("");
m = m.NextMatch();
}
Console.ReadLine();
}
非常感谢。