首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用边界查找多个子字符串

在Java中使用边界查找多个子字符串
EN

Stack Overflow用户
提问于 2012-09-15 12:50:17
回答 6查看 705关注 0票数 0

好了,这就是我的问题。基本上我有一个包含4个单词的字符串,每个单词用#分隔。我需要做的是使用substring方法提取每个单词并将其打印出来。不过,我在弄清楚它的参数时遇到了麻烦。我总是能把第一个做对,但是下面几个通常都有问题。下面是代码的第一部分:

代码语言:javascript
复制
word = format.substring( 0 , format.indexOf('#') );

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

代码语言:javascript
复制
wordTwo = format.substring ( wordlength + 1 , format.indexOf('#') ); 
//The plus one so I don't start at the #.

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

代码语言:javascript
复制
wordTwo = format.substring (wordlength + 1, 1 + wordLength + format.indexOf('#') );

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-09-15 12:57:43

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

代码语言:javascript
复制
wordTwo = format.substring ( wordlength + 1 , format.indexOf('#', wordlength + 1 ) );

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

代码语言:javascript
复制
StringTokenizer tok = new StringTokenizer(format, "#");
String word = tok.nextToken();
String word2 = tok.nextToken();
String word3 = tok.nextToken();

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

代码语言:javascript
复制
String[] parts = String.split("#");
String word = parts[0];
String word2 = parts[1];
String word3 = parts[2];
票数 4
EN

Stack Overflow用户

发布于 2012-09-15 12:56:58

对于这种格式化字符串,您可以使用split()

例如,如果你有这样的字符串,

代码语言:javascript
复制
String text = "Word1#Word2#Word3#Word4";

您可以使用分隔符作为,

代码语言:javascript
复制
String delimiter = "#";

然后创建字符串数组,如下所示

代码语言:javascript
复制
  String[] temp;

对于拆分字符串,

代码语言:javascript
复制
temp = text.split(delimiter);

你可以得到这样的词,

代码语言:javascript
复制
temp[0] = "Word1";
temp[1] = "Word2";
temp[2] = "Word3";
temp[3] = "Word4";
票数 2
EN

Stack Overflow用户

发布于 2012-09-15 12:57:19

使用"#"作为分隔符,使用split()方法来完成此操作

代码语言:javascript
复制
String  s = "hi#vivek#is#good";
String temp = new String();

String[] arr = s.split("#");

for(String x : arr){

  temp = temp + x;
}

或者如果你想精确的使用每个单词..。您已经在arr中拥有它了

代码语言:javascript
复制
arr[0] ---> First Word
arr[1] ---> Second Word
arr[2] ---> Third Word
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12434604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档