用连字符将一个字符串分成两个字符串

我从请求中获取String变量。

String issueField = request.getParameter("issueno"); 

这可能是也可能没有中间的连字符。 我想能够遍历字符串并在看到连字符时划分字符串。

使用String#split:

 String[] parts = issueField.split("-"); 

然后你可以使用parts[0]获得第一部分,第二parts[1] ,…

String.split

虽然String.split可以完成这项任务,但是Guava的Splitter类并不会默默地丢弃尾随分隔符,并且它的API不会在不需要时强制使用正则表达式:

http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Splitter.html

关于你的问题,这是一个代码片段:

 Iterable parts = Splitter.on('-').split(issueField); 

使用Splitter而不是String.split的一些额外奖励:

  • 返回的Iterable是懒惰的。 换句话说,在迭代它之前,它实际上不会完成工作。
  • 它不会拆分所有令牌并将它们存储在内存中。 您可以迭代一个巨大的字符串,逐个令牌,不会增加内存使用量。

不使用Splitter的唯一原因是你不想在你的类路径中包含Guava。

您也可以使用java.util.StringTokenizer类。 虽然String.split是更容易和适合您的问题的方式。