I would recommend avoiding this string parsing entirely and using a more general approach for defining a secondary title for your page.
You should use WordPress' Post Meta system to define a custom meta field with a name like 'subtitle', then call that field in your template. That way you can decide on a page-by-page basis what you want the subtitle to be, rather than being locked into a specific relationship between post title and subtitle. This probably won't make your life more complicated and it will simplify it significantly.
You add post meta to a page or post using the "Custom Fields" section at the bottom of the post editing screen. You display those fields in your theme like this:
<?php echo get_post_meta($post->ID, $meta_key, 1);?>
Obviously you'd probably be better off checking it exists first, giving you something like this:
<?php if ( $subtitle = get_post_meta($post->ID, $meta_key, 1) )
echo "<h3>$subtitle</h3>";
?>
More details on the codex.