How do I make my string compare not sensitive to (ignore) minor differences in white space?

前端 未结 4 914
不知归路
不知归路 2020-12-10 06:11

I have some tests that check strings that are displayed to the user.

I don’t wish the test to fail to due to changes in the indentations or line breaks etc. So I am

4条回答
  •  庸人自扰
    2020-12-10 06:58

    You can also use the following custom function

            public static string ExceptChars(this string str, IEnumerable toExclude)
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < str.Length; i++)
                {
                    char c = str[i];
                    if (!toExclude.Contains(c))
                        sb.Append(c);
                }
                return sb.ToString();
            }
    
            public static bool SpaceInsenstiveComparision(this string stringa, string stringb)
            {
                return stringa.ExceptChars(new[] { ' ', '\t', '\n', '\r' }).Equals(stringb.ExceptChars(new[] { ' ', '\t', '\n', '\r' }));
            }
    

    And then use it following way

    "Te  st".SpaceInsenstiveComparision("Te st");
    

提交回复
热议问题