-1

ここで長い質問があるので、ご容赦ください。スタックを実装するために配列リストを使用している Java のコードがいくつかあります。コマンド「プッシュ」を入力してスタックに追加できるようにする必要があります。ただし、私の問題は、pushSTUFF の形式でなければならないことです。

「STUFF」は、大文字、小文字、文字列、intなど、何でもあります。これを実装しようとしてきた方法は、PUSHが区切り文字である文字列分割メソッドを使用することです。次に、コマンドが switch ケースに渡されます。

少なくとも私が知る限り、分割が破棄されること、および switch ケースがケース入力として push ではなく pushSTUFF を取得していることにすぐに気付きました。

この問題を熟考する中で、私はこれを行うことができるいくつかの方法を思いつきました. それらが可能かどうか、またはそれらを行う方法がわからないだけです。

そう、

  1. pushSTUFF のような文字列を分割し、両方の部分 (プッシュと STUFF) を保持する方法はありますか?

  2. 文字列から、長さや内容が不明なものを分割する方法はありますか (ユーザーが何を入力するかわからないため、STUFF は不明です)

  3. 単にプッシュするのではなく、pushSTUFF を探すようにスイッチ ケースに指示する方法はありますか (これも STUFF が不明なためです)。

これらのいずれかを行うことさえ可能ですか? もしそうなら、あなたは何をお勧めしますか?

もっと良い方法があると確信していますが、私はまだ Java を学んでいるので、現時点ではこれらが最善のように思えました。また、質問に必要だとは思わなかったので、コードを投稿しませんでした。必要に応じていくつか投稿します。お尋ねいただければ、喜んで対応させていただきます。

(tl;dr) 上記の 1、2、または 3 のいずれかを行うことは可能ですか。前もって感謝します。

4

4 に答える 4

1

フォーマットが常にプッシュ*何か*である場合、なぜString.substring()を使用しないのですか?

できるよ:

String something = "pushSTUFF".substring(4);

このように、あなたは常にプッシュの背後にあるものを手に入れるでしょう。

実際のコードを見ずに何を達成しようとしているのかは本当にわかりませんが、問題はこの方法で解決できるほど単純なようです。

于 2013-03-06T23:39:24.570 に答える
1

文字列を分割する代わりに、グループで正規表現を使用して、一致する部分を反復処理できます (ご覧のとおり、分割された文字は破棄されます)。

#1の場合、(疑似コード)のようなことができます:

   regex = (push)(.*)
   stuff = groups[1]

プッシュ後にすべての文字に一致するため、#2 もカバーする必要があります。

#3で何を求めているのか完全にはわかりません。

Java の正規表現に慣れていない場合は、ここに正規表現のチュートリアルがあります。

また、区切り文字を保持するオプションがあるStringTokenizerを確認することもできます。

于 2013-03-06T23:28:30.303 に答える
0

任意の大文字を検索して String.substring(...) を使用できます

文字列の最初の文字が大文字かどうかを調べる、Java

于 2013-03-06T23:28:43.687 に答える
0

.indexOfを使用してプッシュを見つけます。

public class splitstring {
 public static void main(String[] args){
  String tosplit, part1, part2 = new String();
  int ind = 0;
  tosplit = "push1234";
  ind = tosplit.indexOf("push");
  part1 = tosplit.substring(ind,ind + 4);
  part2 = tosplit.substring(ind + 4, tosplit.length());
 }
}
于 2013-03-06T23:34:39.573 に答える