I'll replace it if it is worn, but if it is just looking dirty or discolored and has a good amount of life left, I will clean it. I find it cleans best when it is soaked for a period of time - several hours if you can, maybe on a rainy day or after hours/overnight.
I use a degreasing type solution - can be one you would use in ss bays. (You'll probably have to use something stronger if you have an oil leak on the cloth.) Use a pretty strong concentration of it - mixed with water, and let it soak for a while in an old drum. Take it out, and pressure wash it with just water and you will see a huge improvement. It will be several shades lighter and will get rid of the dingy discoloration and bring back the original coloring of the cloth. When you pressure wash it, place the strips against a clean hard surface on the floor, or hung against a wall so you can direct the pressure onto it without forgiveness.
I'm not so sure if it is the cleaner you use as much as the dwell time that makes the difference. Saoking it in the cleaner solution really allows the cleaner to penetrate into the cloth. Be sure to rinse it well so you are not putting any of this solution on your cars. It rinses easily with the pressure washer against a hard surface.
Of course, the best way to clean cloth is to keep it lubricated in your wash with solutions, and have as much dirt as possible removed from the car before the cloth touches it, but I know cloth can still discolor somewhat over time.
I don't know if you can do this with foam/closed cell materials. I have never tried.