java - Java中使用边界查找多个子字符串

标签 java

好吧,这就是我的问题。基本上我有一个包含 4 个单词的字符串,每个单词用 # 分隔。我需要做的是使用 substring 方法提取每个单词并将其打印出来。但我在弄清楚它的参数时遇到了困难。第一个我总能做对,但后面的一般都会有问题。 这是第一段代码:

word = format.substring( 0 , format.indexOf('#') );

现在,根据我的理解,这基本上意味着从字符串的开头开始,并在 # 之前结束。因此,使用相同的逻辑,我尝试提取第二个单词,如下所示:

wordTwo = format.substring ( wordlength + 1 , format.indexOf('#') ); 
//The plus one so I don't start at the #.

但是这样我就不断收到错误,说它不存在。我认为编译器试图读取第二个单词之前的第一个 #,所以我像这样重写了它:

wordTwo = format.substring (wordlength + 1, 1 + wordLength + format.indexOf('#') );

这样一来,它就完全搞砸了,要么不打印第二个单词,要么没有停在正确的位置。如果我能在格式化方面获得任何帮助,我将不胜感激。由于这是针对一个类的,因此我只能使用非常基本的方法,例如indexOf、length、substring等。因此,如果您可以避免使用任何复杂的方法,那就太棒了!

最佳答案

如果您必须使用子字符串,那么您需要使用 variant of indexOf that takes a start 。这意味着您可以通过在第一个搜索之后开始搜索来开始查找第二个#。 IE。

wordTwo = format.substring ( wordlength + 1 , format.indexOf('#', wordlength + 1 ) );

然而,还有更好的方法可以像这样在分隔符上分割字符串。您可以使用 StringTokenizer 。这是为像这样分割字符串而设计的。基本上:

StringTokenizer tok = new StringTokenizer(format, "#");
String word = tok.nextToken();
String word2 = tok.nextToken();
String word3 = tok.nextToken();

或者您可以使用 String.split专为分割字符串而设计的方法。例如

String[] parts = String.split("#");
String word = parts[0];
String word2 = parts[1];
String word3 = parts[2];

关于java - Java中使用边界查找多个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434604/

相关文章:

JAVA FX - 从输入中获取大写字母的数量

java - 为什么 Windows Server 2008 认为意大利应该在西欧时间?

java - FPS 节流(?)- 使手机的更新/绘图周期更顺畅?

Java 检查字符串可变长度(带子字符串)

java - 使用maven执行jar包

java - 构造函数中的数组,如何在另一个文件中写出。 (多态性)

java - java.util.regex 可以执行哪些优化?

java - 主线程: can runnables be preempted?

java - 单击 "Login Button"不适用于 Selenium Java 代码

java - 如何让 Maven 依赖于运行时类路径而不是测试类路径?