java初心者です。誰か教えて下さい。
javaのプログラミングで、文字列の中に全角が含まれているかどうか調べたい場合は、どう組めばよいのでしょう。
全角だと分からなくなってしまいます。
おねがいします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

String変数に保持してある文字列をSJISに変換してバイト数が文字数と同じか


調べるのが楽だと思います

String str1 = "abあいう";
byte[] buf1 = str1.getBytes("SJIS");
if(str1.length() != buf1.length){
 //全角が含まれてる
}
    • good
    • 0

charをintに型変換してチェックしてみてはいかがでしょう。

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjavaプログラミングでのかぶった文字列の除去

javaを勉強していて、考えると頭がこんがらがってしまったので
質問します。アドバイスお願いします。

今、例えば
配列にstr[0]に"本"、str[1]に"部品"、str[2]に"本"、str[3]に"部品"、str[4]に"交換"
という文字列が格納されているとして、
新しく作った配列str2に配列strでかぶっている文字列を取り除いて
格納するにはどのようにすればよいのでしょうか?
str2[0]に"本"、str2[1]に"部品"、str2[2]に"交換"という風に格納したいです。

使えるメソッドなどありましたら教えてください。
よろしくお願いします。

Aベストアンサー

>使えるメソッドなどありましたら教えてください。

javaで基本型の配列を使ってしまうと、重複を排除してくれるような便利なメソッドは使えません。
というか、クラスArraysでも、mergeの処理メソッドは存在しません。(J2SE1.4.0)

従って、ロジックで処理するしかありません。
手順としては、
1)元の配列を作業用にコピーする。(原本を壊して構わないならコピーしなくても可)
2)配列に有効要素が入っている数を管理する変数を設ける。
3)二重ループを構成して、配列内の第一要素から、それ以降に重複要素がないかを調べる。
  あったら、重複要素の一つ後から末端までを一つ手前に移動するようにコピーする。
  (このコピーにはjava.lang.System.arraycopyメソッドを用いる)
4)手前に移動する事で、末端の要素が無意味になるので、""(空文字列)で埋める。
  同時に、配列の要素数の管理変数を一減算する。
5)管理変数から有効要素数がわかるので、新しい配列を生成し、そこに要素数分のコピーする。

試みに書いたのは以下の形です。

------------- merge.java -------------------------
import java.lang.*;

public class merge{


  public static void main(String args[]) {
    int Sindex,Dindex,Smax,Dmax;

    final
    String[] str = { "本", "部品", "本", "部品", "交換", };
    String[] strw= new String[5];

    String[] str2;

    System.arraycopy(str,0,strw,0,str.length); // 作業用配列作成 1)

    System.out.println("---旧配列---"); // (内容確認)
    for(Sindex=0;Sindex<strw.length;Sindex++) {
      System.out.println(strw[Sindex]);
    }

    Smax=Dmax=strw.length; // 配列の要素数の管理変数初期化 2)
    for(Sindex=0;Sindex<Smax;Sindex++) {
      for(Dindex=Sindex+1;Dindex<Dmax;Dindex++) {
        if(strw[Sindex].equals(strw[Dindex])==true) {
          // 重複要素を潰して重複要素より後を前に一つ移動 3)
          System.arraycopy(strw,Dindex+1,strw,Dindex,Dmax-(Dindex+1));
          strw[Dmax-1]=""; // 終端の要素に空文字列を埋める 4)
          Smax--;Dmax--; // 配列の管理変数を減算する
        }
      }
    }

    str2 = new String[Dmax]; // 重複のない要素数で新配列を生成 5)
    System.arraycopy(strw,0,str2,0,Dmax); // 重複のない要素数分コピーする

    System.out.println(""); // (内容確認)
    System.out.println("---新配列---");
    for(Sindex=0;Sindex<str2.length;Sindex++) {
      System.out.println(str2[Sindex]);
    }
  }
}

≪受付中のままにしないで、ちゃんと質問は締め切りましょう≫

>使えるメソッドなどありましたら教えてください。

javaで基本型の配列を使ってしまうと、重複を排除してくれるような便利なメソッドは使えません。
というか、クラスArraysでも、mergeの処理メソッドは存在しません。(J2SE1.4.0)

従って、ロジックで処理するしかありません。
手順としては、
1)元の配列を作業用にコピーする。(原本を壊して構わないならコピーしなくても可)
2)配列に有効要素が入っている数を管理する変数を設ける。
3)二重ループを構成して、配列内の第一要素から、それ以...続きを読む

Qjava 16進数文字列を0x1足した文字列に変換

"FFFF FFFF FFFF FFF0"

"FFFF FFFF FFFF FFF1"
にしたいです。

10進の数値に変換
1足す
それを16進の数値に変換
それを文字列に変換

というようにしてたのですが
例のような大きな数値だと10進に変換するところでLongのmaxを超える為ダメでした。
お知恵をお貸しくださいますようお願い致します。

Aベストアンサー

BigIntegerを使うとか?

String str = "FFFF FFFF FFFF FFF0";
BigInteger bi = new BigInteger(str.replace(" ", ""), 16);
String result = bi.add(new BigInteger("1")).toString(16).toUpperCase();

StringBuffer sb = new StringBuffer();
int remain = result.length() % 4;
if (remain > 0) {
sb.append(result.substring(0, remain));
}
for (int i = 0; i < result.length() / 4; i++) {
sb.append(" ");
sb.append(result.substring(i * 4 + remain, (i + 1) * 4 + remain));
}
System.out.println(sb);

StringBufferから始まるところは計算結果を指定のフォーマットに変換するコードですが、ざっと思いついたままに書いたのでもっとうまい書き方がありそうです。
BigIntegerについてはJavaDocでも読んでください。
http://docs.oracle.com/javase/jp/6/api/java/math/BigInteger.html

BigIntegerを使うとか?

String str = "FFFF FFFF FFFF FFF0";
BigInteger bi = new BigInteger(str.replace(" ", ""), 16);
String result = bi.add(new BigInteger("1")).toString(16).toUpperCase();

StringBuffer sb = new StringBuffer();
int remain = result.length() % 4;
if (remain > 0) {
sb.append(result.substring(0, remain));
}
for (int i = 0; i < result.length() / 4; i++) {
sb.append(" ");
sb.append(result.substring(i * 4 + remain, (i + 1) * 4 + remain));
}
System.out.println(sb...続きを読む

QJava正規表現-"ある文字列"を含まない文字列

Javaの正規表現で、HTMLタグ以外の文字列を抽出しようとしています。

HTMLタグはの正規表現は"(</?.*>)"のように表しました。これの否定をしたいのですが、方法を教えて下さい。HTMLタグ以外にヒットさせたいです。

一応、現段階のソースを載せます。
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class HTMLInnerGetter {
public static void main(String[] args){
String regex = "(</?.*>)";
String target = "<html><head><title>title</title></head><body><h1>head1<br><p>pragraph</p></body></html>";
ArrayList<String> innerHTMLs = new ArrayList<String>();

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(target);

while(matcher.find()){
innerHTMLs.add(matcher.group(1));
}
System.out.println(innerHTMLs);
}
}

出力結果
[<html><head><title>title</title></head><body><h1>head1<br><p>pragraph</p></body></html>]

※否定できなかったので、HTMLタグがヒットしています。

Javaの正規表現で、HTMLタグ以外の文字列を抽出しようとしています。

HTMLタグはの正規表現は"(</?.*>)"のように表しました。これの否定をしたいのですが、方法を教えて下さい。HTMLタグ以外にヒットさせたいです。

一応、現段階のソースを載せます。
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class HTMLInnerGetter {
public static void main(String[] args){
String regex = "(</?.*>)";
String target = "<html><head><title>title</title><...続きを読む

Aベストアンサー

正規表現でHTMLタグを抜き出せるならその部分を削除すればいいのでは。
http://www.javadrive.jp/regex/replace/index1.html
のように正規表現でマッチした部分を""(何もなし)に変換するのはどうでしょうか。

参考URL:http://www.javadrive.jp/regex/replace/index1.html

QJavaは企業向け言語?個人でJavaをやるのはどうか?

個人の趣味ではJavaでWebアプリやGUIアプリなど作る意味はありますでしょうか(むしろ、その趣味でJavaをやることは向いていますでしょうか)。

また、Javaは企業向けの言語というのは本当でしょうか。そうであれば、個人でやっても意味がないでしょうか。Javaのライブラリは数多く存在しますが、企業がJavaを求めるのはsum社がお金を頂いてサポートするからではないでしょうか。そうすれば、お金のない個人が趣味とか仕事とか、やっても意味がないと思います。お金のない中小企業も同様なことだと思います。

私は今までPHPを学んでいましたが、プログラミングが面白くなり、さらにプログラミングのことが知りたいので、Javaを学ぼうと思います。しかし、個人においてWebアプリケーションはJavaで作るのは他の言語より幅広い可能性があるかどうか見極めています。仮に個人で趣味の範囲でJavaをやったとしても、それは企業にとっては有利なスキルのひとつではないかと思います。

PHPで作れないものはJavaで作れることはありますでしょうか。そういう適材適所の可能性が大きいということでJavaが有利ではないかでしょうか。

私の考え方に対してどう思われますか。皆様のご意見が聞きたいです。

個人の趣味ではJavaでWebアプリやGUIアプリなど作る意味はありますでしょうか(むしろ、その趣味でJavaをやることは向いていますでしょうか)。

また、Javaは企業向けの言語というのは本当でしょうか。そうであれば、個人でやっても意味がないでしょうか。Javaのライブラリは数多く存在しますが、企業がJavaを求めるのはsum社がお金を頂いてサポートするからではないでしょうか。そうすれば、お金のない個人が趣味とか仕事とか、やっても意味がないと思います。お金のない中小企業も同様なことだと思います。

...続きを読む

Aベストアンサー

>>Javaは企業向けの言語というのは本当でしょうか。そうであれば、個人でやっても意味がないでしょうか。Javaのライブラリは数多く存在しますが、企業がJavaを求めるのはsum社がお金を頂いてサポートするからではないでしょうか。

パソコンの企業内での使われ方をみたとき、

1.スタンドアロン
2.ネットワークによるファイル共有
3.データベース利用のクライアント・サーバ
4.クライアントをブラウザとしたWebプログラミング

と変化していったと思います。1~3では、「速度や耐障害・整合性」「プログラムに変更があるとき、各パソコンに新しいプログラムを配布する必要がある」などの問題がありました。でも、4の形態になれば、サーバ上のプログラムさえメンテすれば、クライアントとなるパソコンの増大への対応も容易ですし、機能拡張もサーバ上のWebプログラムさえ入れ替えればOKなことがほとんどとなりました。
企業経営者としては、経費削減効果は大きいわけで嬉しいですよね。また、現場をまかされた情報システム部の人間にとっても、メンテ作業がとても楽になります。
そして、その流れで、業務システムをWeb上に作ろうとしたとき、PHPやPerl,ASP等では力不足で、C,C++では技術的に大変そうに思えて、Javaが選ばれたのだと思います。つまりは、1~3で企業内開発での主流であった(と思える)VisualBasicやdbMAGICの代わりに、Javaが選択されて企業の業務アプリ開発に広く使われるようになったと思われます。
極端な言い方をすれば「企業の標準開発言語がVBやCOBOLからJavaに変わった」ってことですね。

ただし、個人ベースとか、パソコン台数の少ない中小企業の場合、習得が容易で、開発も楽にできることが重要になると思います。またGUIの機能豊富さも大切でしょう。そういう面も含めて考えたとき「Javaは(大)企業向けの言語」というのも当たっている気がします。

>>そうすれば、お金のない個人が趣味とか仕事とか、やっても意味がないと思います。お金のない中小企業も同様なことだと思います。
>>仮に個人で趣味の範囲でJavaをやったとしても、それは企業にとっては有利なスキルのひとつではないかと思います。

まあ、趣味というなら実用性はゼロでもいいわけです。自分の勤める零細企業がJavaを使う可能性が、ほぼゼロでも、将来を考えれば「有利なスキル」になる可能性はありますね。ただし、そのレベルのJava経験を採用側の企業が「スキル」として認めるかどうかには、いくらか疑問がありますけどね。

>>PHPで作れないものはJavaで作れることはありますでしょうか。そういう適材適所の可能性が大きいということでJavaが有利ではないかでしょうか。

PHPの開発をされればお分かりと思いますが、複雑な処理はPHPでは無理だと思います。なので、適材適所っていう意味では、簡単な処理でよければPHPで、複雑で厳密さが必要ならJavaが有利といえるでしょうね。

>>Javaは企業向けの言語というのは本当でしょうか。そうであれば、個人でやっても意味がないでしょうか。Javaのライブラリは数多く存在しますが、企業がJavaを求めるのはsum社がお金を頂いてサポートするからではないでしょうか。

パソコンの企業内での使われ方をみたとき、

1.スタンドアロン
2.ネットワークによるファイル共有
3.データベース利用のクライアント・サーバ
4.クライアントをブラウザとしたWebプログラミング

と変化していったと思います。1~3では、「速度や耐障害・整合...続きを読む

QJavaで全角変換

Javaで全角変換をしたいんですけど、
それらしいメソッドがないらしく
出来ません。
教えて下さい。
よろしくお願いします。

Aベストアンサー

クラスライブラリにはなかったはずです。
自分でカスタムクラスをつくるしかありませんね。
ちなみに全角→半角は仕事で行う必要があったので自分で作成しましたが、、、


人気Q&Aランキング

おすすめ情報