using System; using Microsoft.SPOT; using System.Text; namespace getFieldTest { public class Program { private static StringBuilder msg = new StringBuilder("upengr,1,2,3"); private static byte[] msgArray = new byte[64]; public static void Main() { Array.Clear(msgArray, 0, msgArray.Length); Array.Copy(UTF8Encoding.UTF8.GetBytes(msg.ToString()), msgArray, msg.Length); Debug.Print(msg.ToString()); getField(msgArray, (byte)',', 0); getField(msgArray, (byte)',', 1); getField(msgArray, (byte)',', 2); getField(msgArray, (byte)',', 3); msg.Clear(); msg.Append("upengr"); Debug.Print(msg.ToString()); getField(msgArray, (byte)',', 0); msg.Append(","); getField(msgArray, (byte)',', 0); } private static StringBuilder returnArraySB = new StringBuilder(64); private static byte[] getField(byte[] inArray, byte token, int desiredField) { byte[] returnArray = new byte[64]; int startIndex = 0; int endIndex = inArray.Length; int fieldNum = 0; bool gotField = false; for (int i = 0; i < inArray.Length; i++) { if (inArray[i] == token) { if (desiredField == 0) { endIndex = i; gotField = true; break; } else { fieldNum = fieldNum + 1; if (fieldNum == desiredField) { startIndex = i + 1; endIndex = Array.IndexOf(inArray, token, startIndex); if (endIndex < 0) endIndex = inArray.Length; gotField = true; break; } } } } Array.Clear(returnArray, 0, returnArray.Length); if (gotField || (desiredField == 0)) Array.Copy(inArray, startIndex, returnArray, 0, endIndex - startIndex); returnArraySB.Clear(); returnArraySB.Append(UTF8Encoding.UTF8.GetChars(returnArray)); Debug.Print(returnArraySB.ToString()); return (returnArray); } } }