0

ここにいくつかのコードがあります:

    String cakes = "I like to eat ice cream sandwiches at night";
    cakes = cakes.replace("ice cream", "");
    System.out.println(cakes);

これはアイスクリームを削除します。涼しい。しかし、私が欲しいのは:

    String cakes = "I like to eat ice cream sandwiches at night";
    cakes = "ice" thru "sandwiches";
    System.out.println(cakes);

作り上げた操作は、氷とサンドイッチの間の文字を除いてすべてを削除し、ストリングケーキを「アイスクリームサンドイッチ」にすることです。それは可能ですか?

編集:私は新しいコードを持っています:

    String cakes = "I like to eat ice cream sandwiches at night";
    String ice = "ice";
    String sandwiches = "sandwiches";
    cakes = cakes.substring(cakes.indexOf(ice),cakes.indexOf(sandwiches)+sandwiches.length());

    System.out.println(cakes);

これは機能しますが、問題があります。ケーキの一部の値(たとえば、Webサイトのhtmlコード)について、エラーが発生します。

          Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -number
          at java.lang.String.substring(Unknown Source)
          at package.cclass.main(cat.java:31)
4

3 に答える 3

2

これには正規表現が思い浮かびます。

この投稿には、Java で正規表現を使用する例があります: Java regex で末尾の数字をすべて削除しますか?

この場合、式は次のようになります。"ice.*sandwiches"

編集:それらの単語を削除していると思いました。私の間違い。これは、探していることをさらに実行するコードです。

Pattern p = Pattern.compile("ice.*sandwiches");
Matcher m = p.matcher("I like to eat ice cream sandwiches at night");
while (m.find()) {
    String s = m.group(1);
}
于 2013-02-18T18:00:00.340 に答える
0

これを試すことができます:

String ice = "ice";
String sandwiches = "sandwiches";
cakes = cakes.substring(cakes.indexOf(ice),cakes.indexOf(sandwiches)+sandwiches.length());
于 2013-02-18T18:06:21.817 に答える
0

正規表現または String.indexOf() などを使用できます。

String wordOne = "ice";
String wordTwo = "sandwiches";

startIndex = cakes.indexOf(wordOne);
endIndex = cakes.indexOf(wordTwo) + wordTwo.length();

String result = cakes.substring(startIndex, endIndex);
于 2013-02-18T18:03:26.877 に答える