例如,我有前边界'x'和后边界'y'
EG 给定一个字符串'abcxfoobaryblablah',它应该返回'foobar'。
假设这两个边界在字符串中只出现一次,如示例中所示。
谢谢!不必使用正则表达式,但我想这是最好的方法。
String s = "abcxfoobaryblablah";
s = s.substring(s.indexOf('x') + 1, s.indexOf('y'));
System.out.println(s);
出去
foobar
可能是一个很长的代码,但只是一个简单的逻辑。
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);
String input = "abcxfoobaryblablah";
int startIndex = input.indexOf("x");
int endIndex = input.indexOf("y");
String output = input.substring(startIndex+1, endIndex);
System.out.println(output);
你当然可以做子字符串,但可以使用正则表达式。
String str = "abcxfoobaryblablah";
str = str.replaceAll("^.*x|y.*$", "");
^.*x
匹配从String
up 到的字符x
。y.*$
匹配从y
到结尾的字符String
。
请注意,如果x
是 after y
,那么这将只保留 after 的字符x
到String
. 如果x
不存在,它将保留从String
to开头的字符y
。如果您只希望它在两者 x
都y
以正确的顺序出现时工作,那么这就是您想要的:
String str = "abcxfoobaryblablah";
str = str.replaceAll("^.*x(.*)y.*$", "$1");
这使用组。
最简单的方法是:
String middle = str.replaceAll(".*x(.*)y.*", "$1");