In C#, for instance, there are static methods for
telling if a string is null or empty, finding an element in an array, clearing an array, etc. However there's an instance method for replacing characters in a string, and both static and instance methods for copying elements between arrays.
Similarly, in Python there are functions for getting the length of a list, to filter a list, etc., but instance methods for finding the index of an element and for copying the list.
So what is the rationale for making certain things static and others not?
To be clear, I understand the purpose of static methods. My question is more towards why certain methods are written as static when they could have been written as instance methods. Like
Find for arrays and
Format for strings in C#, and
len in Python.