1

例如,我有前边界'x'和后边界'y'

EG 给定一个字符串'abcxfoobaryblablah',它应该返回'foobar'。

假设这两个边界在字符串中只出现一次,如示例中所示。

谢谢!不必使用正则表达式,但我想这是最好的方法。

4

6 回答 6

6
String s = "abcxfoobaryblablah";
s = s.substring(s.indexOf('x') + 1, s.indexOf('y'));
System.out.println(s);

出去

foobar
于 2013-11-10T04:36:26.320 回答
0

查看 java 的边界匹配器http://docs.oracle.com/javase/tutorial/essential/regex/bounds.html

于 2013-11-10T04:34:29.937 回答
0

可能是一个很长的代码,但只是一个简单的逻辑。

String str="abcxfoobaryblablah";
char array[]=str.toCharArray();
boolean flag=false;
String answer="";

for(int i=0;i<array.length;i++)
{
if(array[i]=='x'){
    flag=true;
    continue;
}
if(array[i]=='y') break;
if(flag)answer+=array[i];
}

System.out.println(answer);
于 2013-11-10T04:43:40.303 回答
0
String  input = "abcxfoobaryblablah";

int startIndex = input.indexOf("x");

int endIndex =  input.indexOf("y");     



String output = input.substring(startIndex+1, endIndex);

System.out.println(output);
于 2013-11-10T04:44:48.197 回答
0

你当然可以做子字符串,但可以使用正则表达式。

String str = "abcxfoobaryblablah";
str = str.replaceAll("^.*x|y.*$", "");

^.*x匹配从Stringup 到的字符xy.*$匹配从y到结尾的字符String

请注意,如果x是 after y,那么这将只保留 after 的字符xString. 如果x不存在,它将保留从Stringto开头的字符y。如果您只希望它在两者 xy以正确的顺序出现时工作,那么这就是您想要的:

String str = "abcxfoobaryblablah";
str = str.replaceAll("^.*x(.*)y.*$", "$1");

这使用

于 2013-11-10T05:34:58.920 回答
0

最简单的方法是:

String middle = str.replaceAll(".*x(.*)y.*", "$1");
于 2013-11-10T05:53:21.087 回答