• ベストアンサー

String型の値が大文字か小文字か判定する

いつもお世話になっています。 String型の値が、大文字か小文字か判定することはできないのでしょうか? char型だと Charactereクラスを使用し判定が可能なのですが。 ◆char型の場合◆ List list = new ArrayList(); //比較する文字列 String mozi = "Abc"; //ループ for(int m=0;m<mozi.length();m++) { //文字を順に小文字かどうか調べる char ccc = mozi.charAt(m); //小文字の場合に限りlistに格納 if(Character.isLowerCase(ccc) == true) { list.add(ccc); } } //表示 for(int l=0;l<list.size();l++) { System.out.println("list="+list.get(l)); } したいのが、 ◆String型◆ List list = new ArrayList(); List list2 = new ArrayList(); list.add("TEST"); list.add("sam"); list.add("OSIETE"); for(int l=0;l<list.size();l++ ) { String compareMozi =(String) list.get(l); //ここで文字列compareMoziが大文字か小文字か調べて、小文字のときだけlist2に格納する } な感じです。 宜しくお願いします。

  • Java
  • 回答数6
  • ありがとう数3

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

  • ベストアンサー
  • kichiwave
  • ベストアンサー率41% (10/24)
回答No.3

本当に読みましたか? 参考ページの 具体的な使い方 ■パターンマッチ ここでは「JavaでHello World」という文字列が「^Java.*」にマッチするか調べています。マッチするので最後のbはtrueになります。 部分でJavaで始まる文字列かどうかマッチさせてる例がありますから これがJavaで始まる文字列の部分が小文字のみで構成されているに 変更する用修正すればできるはずですよ 正規表現としては 小文字から始まる一回以上の繰り返しが最後まで続くという形で かければできると思いますよ

kannitiha
質問者

補足

回答ありがとうございます。 何とか解決できました。 どうやら、見落としていたところがあったみたいです。 ありがとうございました。

その他の回答 (5)

  • hk_java2
  • ベストアンサー率44% (8/18)
回答No.6

commonsが使えるなら、 org.apache.commons.lang.StringUtils#containsAny(java.lang.String str, java.lang.String searchChars) org.apache.commons.lang.StringUtils#indexOfAny(java.lang.String str, java.lang.String searchChars) という手も有り。

kannitiha
質問者

お礼

遅くなりました。 こんなものもあったんですね。参考にさせていただきます。 ありがとうございました。

noname#115336
noname#115336
回答No.5

if ( compareMozi.toLowerCase().equals( compareMozi ) ) { // 全部小文字 list2.add( compareMozi ); }

kannitiha
質問者

補足

回答ありがとうございます。 参考にさせて頂きます。 ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

たぶん正規表現を使うのが最も簡単だと思う. ん~と, ^\p{Ll}*$ あるいは ^[\p{Ll}]*$ かな? 「*」じゃなくて「+」が正しいかもしれんけど. 「1文字ずつ調べる」のは茨の道を覚悟した方がいいと思う.

kannitiha
質問者

補足

回答ありがとうございます。 > ^\p{Ll}*$ あるいは ^[\p{Ll}]*$ これはどう解釈したらいいのでしょうか? この場合のpはどういう意味なのでしょうか? 正規表現だと、 Pattern pattern; Matcher matcher; //Aから小文字かどうかを設定する pattern = Pattern.compile("[a-z].+"); matcher = pattern.matcher("AaaAF"); boolean match = matcher.matches(); System.out.println("Match:"+match); ような形で実現できたのですが。 宜しくお願いします。

  • kana_m
  • ベストアンサー率40% (26/65)
回答No.2

文字列の中身が全部大文字、全部小文字の2パターンしかないのであれば 文字列が1文字以上の場合に先頭1文字をcharで取得して CharacterクラスのisLowerCaseメソッドで判定するとか。

kannitiha
質問者

補足

回答ありがとうございます。 >文字列の中身が全部大文字、全部小文字の2パターンしかないのであれば 文字列が1文字以上の場合に先頭1文字をcharで取得して CharacterクラスのisLowerCaseメソッドで判定するとか。 確かにその方法は、使えますね。 ただ、どうしても、String型の文字全体で、大文字か小文字かを判定したいのです。 宜しくお願いします。

  • kichiwave
  • ベストアンサー率41% (10/24)
回答No.1

正規表現を使って文字列が 大文字だけで構成されているかどうか調べてやってみては どうでしょうか? 正規表現クラスの使い方は http://www.hellohiro.com/regex.htm それか文字列を一度すべて大文字にしてしまったものを 大文字にする前の文字列と比べて同じかどうか という判定もできるかなと

kannitiha
質問者

補足

回答ありがとうございます。 正規表現ですが、調べてみたのですが、 どれを使用すべきなのかがよくわかりません。 具体的にどれを使用すればいいのか教えて頂けないでしょうか? >それか文字列を一度すべて大文字にしてしまったものを 大文字にする前の文字列と比べて同じかどうか という判定もできるかなと 確かに、これは便利ですね。参考にさせていただきます。 宜しくお願いします。

関連するQ&A

  • Listのマッチを判定する便利Util

    Javaで以下のような処理をスマートに実現する良い方法を教えて下さい。 ・Listに配列をaddして、そのListの配列に対して指定した値がいくつマッチするかを判定する。 具体例として、 1、配列を作成 String[] array1 = { "aaa", "bbb", "ccc" }; String[] array2 = { "bbb", "ccc", "ddd" }; String[] array3 = { "ccc", "ccc", "ddd" }; String[] array4 = { "fff", "ggg", "hhh" }; 2、Listに配列を格納 List list = new ArrayList(); list.add(array1); list.add(array2); list.add(array3); list.add(array4); 3、Listの要素から"ccc"と"ddd"が2つマッチする要素を取得 上記の場合は"ccc"と"ddd"が2つマッチするのはarray2だけなのでarray2を取得する。 ※array3も"ccc"と"ddd"が2つありますが、"ccc"が2つあるので計3つマッチと判定して取得しない。 質問は上記3、の箇所です。 できればfor文でループさせて突合せ処理みたいなことは避けてスマートに実現する方法を探しております。 どなたか良い方法をご存知でしたらご教示下さい、お願い致します。

    • ベストアンサー
    • Java
  • ArrayList で配列を扱う場合の記述方法について

    ArrayList で配列を扱う場合の記述方法について、 探しきれないのでご教授お願いします。 ArrayList list = new ArrayList(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(i+"は"+list.get(i)); } という箇所をArrayList<Date>listを使って書き直すのはどのようになるでしょうか。 ArrayList<Date>list= new ArrayList<Date>(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(i+"は"+list.get(i)); } とすると、 型 ArrayList<Date> のメソッド add(Date) は引数 (String) に適用できません。 というエラーになってしまいました。

    • ベストアンサー
    • Java
  • 九九の表の応用

    Java勉強中の超初心者です。 ちょっと前に同じ質問をしたのですが、前回の回答をよく見たら 趣旨とは違った処理をしていたのでもう一度、質問をさせて下さい。 ArrayListを使った九九の表を作成します。 この時に、九九の計算結果を一旦、Stringの配列に格納してから、 ArrayListから値を出力します。 この時にArrayListに格納してから出力するソースは書くことが できたのですが、一旦、格段はString[]s = new String[9];として Stringの配列に格納してから、ArrayListにまとめて出力する方法 をご教授お願いできますか? ----------------------------------------------------------- ArrayList list = new ArrayList(); //ここにString[]s = new String[9];が入ります。 for(int i = 1; i <= 9; i++ ){ for(int j = 1; j <= 9; j++){ list.add(i*j); System.out.print(list.get(list.size() - 1) + " "); if((list.size() - 1) % 9 == 8 && (list.size() - 1) != 0){ System.out.println(""); } } } ---------------------------------------------------------- 上記のソースを元に作成できたらと、思います。

    • ベストアンサー
    • Java
  • ソートについて

    以下のプログラムを実行すると整数のソート結果が "1","12","3"となってしまいます。 整数と文字列を分離させてそれぞれソートさせたいのですが 方法がわかりません。 import java.util.*; import java.io.*; class StrArray{ ArrayList list = new ArrayList(); //最下行に要素を追加 public void add(String data){ list.add(data); } //全ての要素を配列で所得 public String[] getAll(){ String[] all = new String[list.size()]; for(int i=0; i<list.size(); i++){ all[i] = super.get(i); } return all; } public static final int ASC_SORT = 0; public void sort(int mode){ ArrayList al = this.qsort(mode, list); al = list; } //クイックソート public ArrayList qsort(int mode, ArrayList data){ ArrayList result = new ArrayList(); if(data.size()<1){ return new ArrayList(); } String middle = (String)data.get(data.size()/2); ArrayList left = new ArrayList(); ArrayList right = new ArrayList(); for(int i=0; i<data.size(); i++){ if(i != data.size()/2){ if(mode == 0){ if(((String)data.get(i)).compareTo(middle)<=0){ left.add(data.get(i)); } else{ right.add(data.get(i)); } result.addAll(qsort(0, left)); result.add(middle); result.addAll(qsort(0, right)); return result; } return result; } } } } class Sample{ public static void main(String args[]){ StrArray alist = new StrArray(); alist.add("bbb"); alist.add("aaa"); alist.add("ddd"); alist.add("ccc"); alist.add("3"); alist.add("1"); alist.add("12"); alist.sort(0); String[] info = alist.getAll(); for(int i = 0; i < info.length; i++){ System.out.println(info[i]); } } }

  • Itaratorから値を取得するには?

    ArrayList<String> list = new ArrayList<String>(); list.add("その1"); list.add("その2"); list.add("その3"); list.add("その4"); Itarator itar = list.itarator(); while(itar.hasNext()){ System.out.println(itar.toString); itar.Next(); } 上記のように記述するとコンソールには その1 その2 その3 その4 というように出力されることを期待したのですが 結果はitar自身の値が返ってきてしまいました。 Itaratorを使用して、ArrayListの値を出力させるには どうすればよいのでしょうか?

    • ベストアンサー
    • Java
  • StringクラスのcompareToメソッド

    ArrayListに登録した文字列を五十音順にソートしようと思いComparator を使用して 以下のようなサンプルプログラムを作ってみました。 ところが想定していたような {赤ちゃん、富士山、山口県}とはならず {富士山、山口県、赤ちゃん} というような結果になりました。 compare() の戻り値の部分を return ((String)arg1).compareTo((String)arg0); に変更しても{赤ちゃん、山口県、富士山} となり辞書の並びとは異なる結果になりました。 辞書順に並べるにはなにかよい方法はありますでしょうか。 public class compareTest { public static void main(String[] args) { ArrayList<String> array = new ArrayList<String>(); String a = "赤ちゃん"; String b = "山口県"; String c = "富士山"; array.add(a); array.add(b); array.add(c); for(int i=0;i<array.size();i++) { System.out.println("ソート前=" + array.get(i)); } Collections.sort(array, new testComp()); for(int i=0;i<array.size();i++) { System.out.println("ソート後=" + array.get(i)); } } } public class testComp implements Comparator { public int compare(Object arg0, Object arg1) { return ((String)arg0).compareTo((String)arg1); } }

    • ベストアンサー
    • Java
  • java勉強中です。

    java勉強中です。 今、ArrayListでつまづいています。 質問の仕方が下手で、内容が分かり難いかもしれませんが、 どなたか、どうかよろしくお願いいたします。 ArrayList<String> listA = new ArrayList<String>(); ArrayList<String[]> listB = new ArrayList<String[]>(); があります。 1回目に listA = [aaa, bbb, ccc, ddd] 2回目に listA = [eee, fff, ggg, hhh] と、listA.add("~")で4つ追加して、 4つたまったら、それを1つの塊として 今度はlistBにaddしていきたいのですが、 listB.add(listA);としてしまっているので 下記のようにエラーになってしまいます。 ArrayList<String[]> add(String[])は引数(ArrayList<String>)に適用できません。 listBに[aaa, bbb, ccc, ddd],[eee, fff, ggg, hhh] としたいのですが、どのようにしたら良いでしょうか?

    • ベストアンサー
    • Java
  • List内の数字(string型)を並び替えたい

    c sharp 環境です。 たとえばですが、 List<string> testlist = new List<string> (); testlist.add("1"); testlist.add("12"); testlist.add("3"); testlist.add("4"); … として、testlist.Sort();で並び替えると、中が文字列なので 1、12…の順番になってしまいます。 これを数字の昇順にしたい(1、2、3…)のですが、可能でしょうか? 数字型のListなら話が早いのですが、そうもいかず…。

  • while文の表示

    こんにちは 今DB接続し DBからデータを表示するのを勉強しています public String[][] selectExec(String sql) throws SQLException{ Statement smt = con.createStatement(); //ステートメントオブジェクト作成 SQL文を送るために作成 ResultSet aa=smt.executeQuery(sql); //SQLから要素取得 ArrayList<String> TESTNO = new ArrayList<String>(); //TESTNO用ののArrayList作成 ArrayList<String> NAME = new ArrayList<String>(); //KAME用 ArrayList<String> KANA = new ArrayList<String>(); //KANA用 while(aa.next()){ //Resultsetが最終行になるまで実行 TESTNO.add(aa.getString("TESTNO")); NAME.add(aa.getString("NAME")); KANA.add(aa.getString("KANA")); } aa.close(); //使い終わったリザルトクローズ smt.close(); //ステートメントクローズ      //オブジェクトの解放 return hairetu(TESTNO,NAME,KANA); public String[][] selectExec(String sql, int fromIdx,int toIdx) throws SQLException{ String[][]all=selectExec(sql); ArrayList list = new ArrayList(Arrays.asList(all[0])); ArrayList list1 = new ArrayList(Arrays.asList(all[1])); ArrayList list2 = new ArrayList(Arrays.asList(all[2])); int i=1; while(i<fromIdx){ //指定された前のリスト削除 list.remove(0); list1.remove(0); list2.remove(0); i++; } while(toIdx<list .size()){ //指定されたあとのリスト削除 list .remove(toIdx); list1.remove(toIdx); list2.remove(toIdx); toIdx++; } return hairetu(list ,list1,list2); public String[][] hairetu(ArrayList T,List N ,List K){ String[][]all=new String[3][T.size()]; all[0] = (String[])T.toArray(new String[0]);//配列TSETNOに収納 all[1] = (String[])N.toArray(new String[0]);//配列NAMEに収納 all[2] = (String[])K.toArray(new String[0]);//配列KANAに収納 return all; selectExec(String sql)で全表示 selectExec(String sql, int fromIdx,int toIdx) で列を何行~何行を指定 でリストに変換、リスト削除して 二次元配列にもどしているのですが たとえば 1~5を指定すると 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 6 6 6 8 8 8 ↑のように 5ひとつとばしで表示されます while文の書き方がわるいのでしょうか・・・・ アドバイスお願いします

    • ベストアンサー
    • Java
  • ArrayListに多次元配列

    ArrayListに多次元配列の変数を格納したのですが、取り出し方がわからず困っています。 ----------------------------------------------- String[][] str = {{"aaa","bbb","ccc","ddd","eee","fff"}, {"aaa","bbb","ccc","ddd","eee","fff"}, }}; ArrayList array = new ArrayList(); array.add(str[0]); array.add(str[1]); ----------------------------------------------- 上記の場合で、str[0][2];を取得する方法がわかりません。 java初心者なのでおかしな質問かもしれませんが、宜しくお願いします。

    • ベストアンサー
    • Java