在这里我有下面的代码。这个想法是,如"R#GUPW*UIOPW#WERTY*RT#LLOPPPPER*CVW"
短语返回一个模式像返回相同的字符串中找到的子串
"#GUPW*"
"#WERTY*"
"#LLOPPPPER*"
是从与#开头,以*结尾那句返回所有的子字符串。所以在这个短语中有3个。
import java.io.*;
public class Pattern {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
String phrase = "R#GUPW*UIOPW#WERTY*RT#LLOPPPPER*CVW";
String found ="";
for (int y = 0; y<phrase.length(); y++)
{
found = found + phrase.substring(phrase.indexOf("#"), phrase.indexOf("*"));
}
System.out.println(found);
}
}
,但我的代码返回 "#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW#GUPW"
我怎么能返回这些子与#开始,从我的短语*结束。
"#GUPW*"
"#WERTY*"
"#LLOPPPPER*"
'indexOf'时没有更多的参数调用总是从字符串的开头searchs。所以它总是会找到“#GUPW” – Clayn
但这并不明确。您正在遍历每个字符,但每次都从头开始使用indexOf方法。如果你这样迭代,检查当前字符,如果它是'#'或不。或者只是搜索每个'#'并做你自己的事情。 PS:你的例子不正确,因为你缺少'*',或者我不明白 – AxelH
问自己,为什么你在循环中有y变量?你没有在任何地方使用它?你希望从程序中获得独特的phrase.length()打印输出吗?进一步的提示: - 使用while循环,将索引存储到变量中,以便您可以在更多的子字符串调用中使用它们,并阅读有关2参数indexOf方法的文档。 –