1

たとえば、前の境界 'x' と後ろの境界 'y' があります。

EG 文字列 'abcxfoobaryblablah' を指定すると、'foobar' が返されます。

例のように、2 つの境界が文字列内で 1 回だけ出現すると仮定します。

ありがとう!正規表現を使用する必要はありませんが、それが最善の方法だと思います。

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";
str = str.replaceAll("^.*x|y.*$", "");

^.*xの先頭から までの文字に一致Stringxます。からの末尾までy.*$の文字に一致します。yString

xが の後にある場合、これは の後ろから の末尾までのy文字だけを保持することに注意してください。が存在しない場合は、 の先頭からtoまでの文字が保持されます。との両方が正しい順序である場合にのみ動作させたい場合は、次のようにします。xStringxStringy xy

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

これはグループを使用します。

于 2013-11-10T05:34:58.920 に答える
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 middle = str.replaceAll(".*x(.*)y.*", "$1");
于 2013-11-10T05:53:21.087 に答える