Java 如何获取子字符串的位置

Java 如何获取子字符串的位置,java,position,substring,Java,Position,Substring,我正在尝试获取字符串中多个子字符串的位置。如果字符串中的单词可能很重要,我将使用标记器来遍历这些单词 例如,如果我的输入是: “你好

我正在尝试获取字符串中多个子字符串的位置。如果字符串中的单词可能很重要,我将使用标记器来遍历这些单词

例如,如果我的输入是:

“你好 我想得到每个元素的位置,这样

Hello : Pos 1
< : Pos 7
shaz : Pos 9
= : Pos 14
2 : Pos 16
如我所愿,这是8,但我想得到每个子字符串的位置。

您可以使用:

输出: 1:你好
8:我的
11:名称
16:是吗


请尝试此编辑版本:

String source = "Hello < shaz = 2 Hello < shaz = 2 Hello";
String[] parts = Pattern.compile(" ").split(source);
int startIndex = 0;
for(String part: parts){        
    System.out.println(part + " : Pos " + (source.indexOf(part, startIndex) + 1));
    startIndex += part.length() + 1;
}
String source=“Hello
印刷品:

你好:1号位置

<:位置7

沙兹:位置9

=:位置14

2:16号位置

喂:18号位置

<:位置24

沙兹:26号位置

=:位置31

2:33号位置


您好:35号位置

您输入字符串的一般格式是什么?它们是字符串,但可以输入任何内容。我正在使用一个扫描器,并使用标记器将字符串分离到数组列表中。不过,我在想,要得到这个职位,我需要在它被放入阵列之前完成它@PM77-1只要保留所有字符,就可以使用子字符串的长度进行简单的算术运算。@PM77-1好的,谢谢!它工作得很好。我只需要让接线员负责,但今晚我要和他们一起工作。谢谢大家!@DontPayForme如果您将正则表达式更改为
\\S+
,您将获得与示例中使用运算符相同的输出,但您也将获得
Hello,
,因此您需要正确的正则表达式,具体取决于您需要获得的内容。@PM77-1不知道他在做什么(可能使用
String.split()
)他需要它来创建matcher,matcher有
start
方法(如果他想使用我的解决方案)。如果您有两个相同的令牌,它将无法正常工作。@PM 77-1-捕捉得好!我对原稿做了一些修改。
String string = "Hello, my name is";
Pattern pattern = Pattern.compile("\\w+"); // search for word, the regex might need adjustment
Matcher matcher = pattern.matcher(string);
// Will print the word and it's position
while (matcher.find()) {
    System.out.format("%d:%s%n", matcher.start() + 1, matcher.group());
}
String source = "Hello < shaz = 2 Hello < shaz = 2 Hello";
String[] parts = Pattern.compile(" ").split(source);
int startIndex = 0;
for(String part: parts){        
    System.out.println(part + " : Pos " + (source.indexOf(part, startIndex) + 1));
    startIndex += part.length() + 1;
}