• ベストアンサー

文字列の引き算

 JAVA初心者です、宜しくお願いします。  文字列の変更、分割をしたいのですが、色々と参考書を探してみましたが、なかなか理解出来ません。  例えば、"花子"という文字列から、"子"だけを取り除いて"花"だけをプリントしたいのですが、数字みたいに引き算 では出来ないのでしょうか。  また、"太郎"という文字列を"太"、"郎"という二つの文字列の変数を作りたいのですが、やはりインスタンス化とかを してやらないと駄目なのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • braun5
  • ベストアンサー率50% (1/2)
回答No.4

No.3さんの補足に対する回答です. for(String str:strs)はJDK5.0から追加された機能で,拡張for文です. 参考サイト http://www.javainthebox.net/laboratory/J2SE1.5/LangSpec/ExtendedFor/ExtendedFor.html http://www.techscore.com/tech/J2SE/JavaLanguage/2.html Javaのバージョンは何ですか.Windowsの環境でしたら,コマンドプロンプトからjava -versionで確認できるかと思います. 参考サイト http://www.famlog.jp/article.php?id=286 java versionが1.5以下ならば,JDKをアップデートしないとNo.3さんのサンプルコードは実行できません. それ以外の方法では,拡張for文は糖衣構文ですので,該当箇所を以下の用に変更すると実行できると思います. for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); }

htgotk_001
質問者

お礼

皆さん色々と親切な回答有り難う御座います。 大変勉強になりました。

その他の回答 (3)

回答No.3

分割は簡単です。String.splitを使用すればOK。 引き算はコード書くしかないかな。サンプルコード示しましょう。ご参考にどうぞ。 public class testString { /** * @param args */ public static void main(String[] args) { String mStr = "花子and太郎"; String[] strs = stringSprit(mStr); for(String str:strs){ System.out.println(str); } System.out.println("#1#" + stringDec(mStr , "花子")); System.out.println("#2#" + stringDec(mStr , "子a")); System.out.println("#3#" + stringDec(mStr , "太郎")); System.out.println("#4#" + stringDec(mStr , "あいう")); System.out.println("#5#" + stringDec(mStr , mStr)); } /**文字列を分割 * * @param argString * 分割したい文字列 * @return * 一文字単位に分割した結果 */ public static String[] stringSprit(String argString){ return argString.split(""); } /** * 文字列を引き算 * * @param argString * 引き算されるほうの文字列 * @param decString * 引き算するほうの文字列 * @return *    引数1から(最初の)引数2を取り除いた文字列 *    ただし、引数1に引数2が含まれなかった場合には、引数1そのまま */ public static String stringDec(String argString,String decString){ int lenA = argString.length(); int lenD = decString.length(); int sPos = argString.indexOf(decString); int ePos = sPos + lenD; if(sPos < 0){ return argString; } StringBuffer buf = new StringBuffer(); if(sPos > 0){ buf.append(argString.substring(0, sPos)); } if(ePos < lenA){ buf.append(argString.substring(ePos)); } return buf.toString(); } }

htgotk_001
質問者

補足

 osu_neko09さん、回答有り難う御座います。 for(String str:strs){のところでエラーがでるのですが、、、、、 for(String str;strs){でもはしらないし、 for(String str.strs){でもはしらないんですが、   宜しくお願いします。 コードの意味は理解出来るのですが。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

引き算は、出来ないと思いますが。 切り取ることは、出来る様な 例えば、以下のように String namae ="太郎一郎花子"; System.out.println(namae.substring(0, 2)); System.out.println(namae.substring(2, 4)); System.out.println(namae.substring(4, 6)); 実行結果 太郎 一郎 花子

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.1

int(数値)の場合も、単純な引き算のような式ではインデックスの一部の取得はできません。 たとえば int i = 10 という数値型変数「i」があるとして、これに「10」という数値が入っているとします。 これを-1したら変数「i」は「9(単純に10-1)」になります。 文字列の一部を取得する際は「substring」してやる必要があります。 始点・終点の指定が必要になりますので、substringのパラメータに文字列検索結果と文字列の長さを渡してやればいいです。

関連するQ&A