\\と\tと\rと\nの置換
俺はただ\\、\t、\r、\nさえ置換出来りゃいいんだ。
Regex.unescapeとか遅くて嫌なんだという方のために。
public static string getEscapeString(string source) { char[] c = source.ToCharArray(); int j = 0, cLength = c.Length; char[] ret = new char[cLength]; for (int i = 0; i < cLength; i++) { if (c[i] == '\\') { i++; // 最後が\\で終わっている if (i == cLength) throw new System.ArgumentException("invalid escape sequence"); switch (c[i]) { case 'r': ret[j++] = '\r'; break; case 'n': ret[j++] = '\n'; break; case 't': ret[j++] = '\t'; break; case '\\': ret[j++] = '\\'; break; default: // 謎のエスケープシーケンス throw new System.ArgumentException("invalid escape sequence"); } } else { ret[j++] = c[i]; } } return new string(ret, 0, j); }
null対策は面倒なのでセズ。
パフォーマンス比較はご自分でどうぞ。