2

以下のコードを使用して、モバイル デバイスから SMS を取得しています。問題は、null 文字、改行 (\N)、および \r を読み取れないことです。

try
{

    Regex r = new Regex(@"\+CMGL: (\d*),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n");
    Match m = r.Match(input);
    while (m.Success)
    {
        ShortMessage msg = new ShortMessage();
        //msg.Index = int.Parse(m.Groups[1].Value);
        msg.Index = m.Groups[1].Value;
        msg.Status = m.Groups[2].Value;
        msg.Sender = m.Groups[3].Value;
        msg.Alphabet = m.Groups[4].Value;
        msg.Sent = m.Groups[5].Value;
        msg.Message = m.Groups[6].Value;
        //string a = msg.Message;
        //string replacement = Regex.Replace(a, @"\t|\n|\r", "");
       // msg.Message = replacement;
        messages.Add(msg);

        m = m.NextMatch();
    }

}

例:

SMS 本文に「私の名前はビラル アーメドです」が含まれている場合、上記の SMS が読み上げられます。

私の SMS が「私の名前は \n bilal Ahmed です」の場合、SMS は読み取られません。

たとえば、私の SMS が" "の場合、SMS は読み取られません。

正規表現の使用には問題があると思います。

4

1 に答える 1

1

入力にある全文を表示する方が良いですが、次のようなものを使用できると思います

Regex r = new Regex(@"\+CMGL: (\d*),""(.+)"",""(.+)"",(.*),""(.+)""\r\n((.|\r|\n)+)\r\n");
于 2013-04-02T06:41:42.277 に答える