public static string process(string s) { Stack tags = new Stack(100), temp = new Stack(100); string tag = "", word = "", result = ""; bool state = false; int i; for (i = 0; i < s.Length; i++) { if (s[i] == '<') { state = true; if (word != "") { while ((tag = tags.Pop()) != null) { word = operation(tag, word); temp.Push(tag); } while ((tag = temp.Pop()) != null) { tags.Push(tag); } result += word; } word = ""; tag += s[i]; } else if (state && s[i] == '>') { tag += s[i]; if (tag[1] == '/') { if (tags.IsEmpty()) // >pop yapıyorsun ama stack boş. { return(""); } if (balance(tags.Peek(), tag)) { tags.Pop(); } else // >pop yapılan elaman ile özdeş değil. { return(""); } } else { tags.Push(tag); } tag = ""; state = false; } else if (state) { tag += s[i]; } else { word += s[i]; } } result += word; if (!tags.IsEmpty()) // >hala item var o yüzden hatalı. { return(""); } return(result); }
public static string process(string s) { Stack tags = new Stack(100), temp = new Stack(100); string tag = "", word = "", result = ""; bool state = false; int i; for (i = 0; i < s.Length; i++) { if (s[i] == '<') { state = true; if (word != "") { while ((tag = tags.Pop()) != null) { word = operation(tag, word); temp.Push(tag); } while ((tag = temp.Pop()) != null) tags.Push(tag); result += word; } word = ""; tag += s[i]; } else if (state && s[i] == '>') { tag += s[i]; if (tag[1] == '/') { if (tags.IsEmpty()) // >pop yapıyorsun ama stack boş. return ""; if (balance(tags.Peek(), tag)) { tags.Pop(); } else // >pop yapılan elaman ile özdeş değil. return ""; } else tags.Push(tag); tag = ""; state = false; } else if (state) tag += s[i]; else word += s[i]; } result += word; if (!tags.IsEmpty()) // >hala item var o yüzden hatalı. return ""; return result; }