Java 在连字符处将字符串一分为二

Java 在连字符处将字符串一分为二,java,string,substring,Java,String,Substring,我从请求中获取一个字符串变量 String issueField = request.getParameter("issueno"); 这中间可能有连字符。我希望能够遍历字符串并在看到连字符时分割字符串。使用字符串分割: 然后您可以使用parts[0]获取第一部分,parts[1]获取第二部分,虽然可以完成这项工作,但Guava的Splitter类不会自动放弃尾部分隔符,并且它的API不会在不需要时强制使用正则表达式: 关于你的问题,这里有一个代码片段: Iterable<String

我从请求中获取一个字符串变量

String issueField = request.getParameter("issueno");
<>这中间可能有连字符。我希望能够遍历字符串并在看到连字符时分割字符串。

使用字符串分割:

然后您可以使用
parts[0]
获取第一部分,
parts[1]
获取第二部分,

虽然可以完成这项工作,但Guava的Splitter类不会自动放弃尾部分隔符,并且它的API不会在不需要时强制使用正则表达式:

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

Iterable<String> parts = Splitter.on('-').split(issueField);
Iterable parts=Splitter.on('-').split(issueField);
使用Splitter而不是String.split可以获得一些额外的好处:

  • 返回的
    Iterable
    是惰性的。在里面 换句话说,它实际上不会起作用 继续工作,直到您对其进行迭代
  • 它不会分割所有的代币 并将它们存储在内存中。你可以 迭代一个巨大的字符串, 一个令牌接一个令牌,不在 内存使用

不使用Splitter的唯一原因是如果您不想在类路径中包含番石榴。

您也可以使用java.util.StringTokenizer类。虽然String.split更容易解决您的问题。

为什么不使用
issueField.split(“-”)
并检查数组大小?您好,下一次出于SEO原因,我建议您添加问题中提到的语言。这是因为谷歌不会直接让人们问你的问题,即使他们想要的是PHP或dart等。呸,请确保parts.length大于或等于2。。。或者检查它是否有多个连字符或其他内容。。。
Iterable<String> parts = Splitter.on('-').split(issueField);