// NB, you need asciiShift +1 to go from A to B, even though that's a 'decrease' in priority private void ChangePriority(int asciiShift) { if (Priority.IsNullOrEmpty()) { SetPriority('A'); } else { var current = Priority[1]; var newPriority = (Char)((int)(current) + asciiShift); if (Char.IsLetter(newPriority)) { SetPriority(newPriority); } } }
public void SetPriority(char priority) { var priorityString = char.IsLetter(priority) ? new string(new[] { '(', priority, ')' }) : ""; if (!Raw.IsNullOrEmpty()) { if (Priority.IsNullOrEmpty()) { Raw = priorityString + " " + Raw; } else { Raw = Raw.Replace(Priority, priorityString); } } Raw = Raw.Trim(); Priority = priorityString; }