code: public static boolean containsNone(String str, char[] searchChars) {
          if (str == null || searchChars == null) {
              return true;
          }
          int csLen = str.length();
          int csLast = csLen - 1;
          int searchLen = searchChars.length;
          int searchLast = searchLen - 1;
          for (int i = 0; i < csLen; i++) {
              char ch = str.charAt(i);
              for (int j = 0; j < searchLen; j++) {
                  if (searchChars[j] == ch) {
                      if (CharUtils.isHighSurrogate(ch)) {
                          if (j == searchLast) {
                              // missing low surrogate, fine, like String.indexOf(String)
                              return false;
                          }
                          if (i < csLast && searchChars[j + 1] == str.charAt(i + 1)) {
                              return false;
                          }
                      } else {
                          // ch is in the Basic Multilingual Plane
                          return false;
                      }
                  }
              }
          }
          return true;
      }
docs: <p>Checks that the String does not contain certain characters.</p>
  
  <p>A <code>null</code> String will return <code>true</code>.
  A <code>null</code> invalid character array will return <code>true</code>.
  An empty String (length()=0) always returns true.</p>
  
  <pre>
  StringUtils.containsNone(null, *)       = true
  StringUtils.containsNone(*, null)       = true
  StringUtils.containsNone("", *)         = true
  StringUtils.containsNone("ab", '')      = true
  StringUtils.containsNone("abab", 'xyz') = true
  StringUtils.containsNone("ab1", 'xyz')  = true
  StringUtils.containsNone("abz", 'xyz')  = false
  </pre>
  
  @param str  the String to check, may be null
  @param searchChars  an array of invalid chars, may be null
  @return true if it contains none of the invalid chars, or is null
  @since 2.0