String.Contains("\n") returns false

Ok, I have a string that has
in it, but string.Contains("
") always returns false.

			string temp = lp.levelName;
			Debug.Log(temp);
			Debug.Log("

" + temp.Contains("
“));
temp = temp.Replace(”
", “”);
Debug.Log("Replace
" + temp);
nameText.text = temp;

Log output (after a lot of useless info)

MATCH

3
False
Replace
MATCH
3

I use

t.levelName = EditorGUILayout.TextField("Level Name", t.levelName);

to enter the level name, so maybe it’s doing some strange modifications to the string there.

Edit:

Ok seconds after posting this I find it’s a bug with EditorGUILayout.TextField

http://forum.unity3d.com/threads/177932-BUG-EditorGUILayout-TextField-escapes-the-string

You need to escape the backslash or use a here-string.

Either of these should work:

     Debug.Log(temp.Contains("\

“));
Debug.Log(temp.Contains(@”
"));

And it’s not a bug - it’s how programming languages work -
means “newline” so you have to tell it in some way that you really want

  • not “newline”

is an escaped character, not a string. You can either escape it by using the @ symbol before using a string containing the character…(which is pointless), OR use it as the character it is:

Debug.Log(temp.Contains('

'));

Notices the single quote, indicating a character type instead of string type.