A string graph is the intersection graph of a collection of continuous arcs in the plane. We show that any string graph with in edges can be separated into two parts of roughly equal size by the removal of O(m(3/4)root log m) vertices. This result is then used to deduce that every string graph with n vertices and no complete bipartite subgraph K-t,K-t has at most c(t)n edges, where c(t) is a constant depending only on t. Another application shows that locally tree-like string graphs are globally tree-like: for any epsilon > 0, there is an integer g(epsilon) such that every string graph with n vertices and girth at least g(epsilon) has at most (1 + epsilon)n edges. Furthermore, the number of such labelled graphs is at most (1 + epsilon)(n) T(n), where T(n) = n(n-2) is the number of labelled trees on n vertices.