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も見ています

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

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

Q半角カナを全角カナに変換したい

表題の通りです。
先輩から引き継いだエクセルのデータが、全角カナと半角カナとの両方を、使い分けなどではなく使用しているものだったので、半角カナを全部、全角カナに変換したいと考えています。
置換機能で50音全部を置換するのは大変ですので、一度に変換する良い方法があれば教えてください。
また、全角アルファベットを、普通の英字(半角アルファベット?)にも変換したいと思っています。

Aベストアンサー

=JIS(セル番地)
で全角に
=ASC(セル番地)
で半角になります。

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)二重ループを構成して、配列内の第一要素から、それ以...続きを読む

Q全角半角変換 C++/CLI

C++/CLI(VC++2008) で
(1)たとえば 東京bay を 東京bay にという風に全角半角混在の文字列のなかの半角文字を全角文字に変換するにはどうすればよろしいでしょうか
(2)全角半角混在の文字列のなかの全角文字を半角文字に変換するにはどうすればよろしいでしょうか
 

Aベストアンサー

1. VBのStrConvを使う。

#using "Microsoft.VisualBasic.dll"
using namespace Microsoft::VisualBasic;

String^ s1 = L"東京bay";
// 全角文字へ
String^ s2 = Strings::StrConv(s1, VbStrConv::Wide, 0);
// 半角文字へ
String^ s3 = Strings::StrConv(s2, VbStrConv::Narrow, 0);


2. Win32 API LCMapStringを使う。

#include "windows.h"
#include "vcclr.h"
#pragma comment(lib, "kernel32.lib")

String^ s1 = L"東京bay";
pin_ptr<const wchar_t> p1 = PtrToStringChars(s1);

array<wchar_t>^ b2 = gcnew array<wchar_t>(s1->Length + 1);
pin_ptr<wchar_t> p2 = &b2[0];
::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_FULLWIDTH, p1, -1, p2, b2->Length);
String^ s2 = gcnew String(p2);

array<wchar_t>^ b3 = gcnew array<wchar_t>(s1->Length + 1);
pin_ptr<wchar_t> p3 = &b3[0];
::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_HALFWIDTH, p2, -1, p3, b3->Length);
String^ s3 = gcnew String(p3);

1. VBのStrConvを使う。

#using "Microsoft.VisualBasic.dll"
using namespace Microsoft::VisualBasic;

String^ s1 = L"東京bay";
// 全角文字へ
String^ s2 = Strings::StrConv(s1, VbStrConv::Wide, 0);
// 半角文字へ
String^ s3 = Strings::StrConv(s2, VbStrConv::Narrow, 0);


2. Win32 API LCMapStringを使う。

#include "windows.h"
#include "vcclr.h"
#pragma comment(lib, "kernel32.lib")

String^ s1 = L"東京bay";
pin_ptr<const wchar_t> p1 = PtrToStringChars(s1);

a...続きを読む

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...続きを読む

Qワードで数字の全角を半角に(カタカナは全角のままで)変換するには?

ワードに100ページの文章があります。全角数字が散在しています。全角数字を半角に直したく、半角操作をかけるとカタカナも半角に変換されてしまいます。数字だけ変換されるようにするには、どのようにしたらいいのでしょうか。ワードの、書式メニュー→文字種の変換→半角、で操作をおこないました。

Aベストアンサー

メニューの[編集]→[検索]又は[Ctrl+F]で検索タブが開きます。

[検索する文字列]に[0-9]
(0、9、は全角。[ ]、-、は半角)

[見つかったすべての項目を強調表示する]にチェックを入れます。

[オプション]ボタンを押し[検索オプション]が開きます。
[ワイルドカードを使用する]にチェックを入れると[あいまい検索]のチェックが外れます。

[すべて検索]ボタンを押して、文書の中の全角数字の全てが選択状態になったら、
メニューの[書式]→[文字種の変換]→[半角]を選択します。

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

Qキーボードでの「英数(全角/半角)」変換

 言語変換関係の質問は、「言語バー」「キーボード」関係で、多数あるのですが、どれが自分の探している症状なのか分からないので、新しく質問します。
 PCはSOTECのWV2150Cで、OSはWindowsXPで、ローマ字入力しています。
 キーボードによる、「英字和字」変換と、「英字の全角・半角」変換が、自分の意図しない変換に、どういうわけか、時々変わってしまいます。言語バーをマウスでクリックするのは面倒なので、キーボードで操作したいのですが、それが、コントロール不能になってしまうわけです。
 具体的には、まず「英字の全角」と「和字の全角」の相互変換ですが、うまくいっているときは、通常和字にしているときキーボードの「英数・CapsLock」を押すだけで「英字全角」に変換できます。また押せば、元に戻せます。しかし、何かの拍子で、このキーを押すと、「英字の半角」になってしまい、どうしても「英字の全角」になりません。しかし、時間が経って、いつのまにか、相互変換できるように戻っていることもしばしばです。
 「英字の半角」はキーボード上部の「半角/全角」キーで「英字半角」と「和字全角」とが相互変換できるので、「英数・CapsLock」キーでは、「和字全角」と「英字全角」の相互変換を維持したいわけです。というより、このキーの操作を、どちらも使えるよう、自分でコントロールしたいわけです。
 自分でコントロールするためには、「英数・CapsLock」キーを押すと、何かの拍子で、「英字全角」になったり「英字半角」になったりする、その「何かの拍子」が分かればいいと思うのですが、それが、分かりません。
 PCの種類によって、キーボード操作は違うのかもしれませんが、一つ、よろしくお願いいたします。

 言語変換関係の質問は、「言語バー」「キーボード」関係で、多数あるのですが、どれが自分の探している症状なのか分からないので、新しく質問します。
 PCはSOTECのWV2150Cで、OSはWindowsXPで、ローマ字入力しています。
 キーボードによる、「英字和字」変換と、「英字の全角・半角」変換が、自分の意図しない変換に、どういうわけか、時々変わってしまいます。言語バーをマウスでクリックするのは面倒なので、キーボードで操作したいのですが、それが、コントロール不能になっ...続きを読む

Aベストアンサー

#2です。

質問者さんの使用法なら、必要はないでしょうが、
 >このキーの操作を、どちらも使えるよう、自分でコントロールしたい
ということなので、補足しておきます。

「全角英数」/「半角英数」を基本設定の優先順位と逆のほうにしたいときは、[Caps Lock]の後、[Shift]+[無変換]で行えます。

なお、ご存じかと思いますが、「全(半)角英数」から「ひらがな」に復帰するには、[Caps Lock]のほか[無変換]でも[カタカナ ひらがな]でも可能です。

ひとつ注意が必要なのは、これもご存じかも知れませんが、次の点です。
「全(半)角英数」モードで入力作業をした後、「ひらがな」に復帰することなく、[半角/全角]によって「直接入力」モードにすると、
次に「ひらがな」に復帰しようとしても、[半角/全角]を押したのでは戻れず、「全(半)角英数」になるだけです。
この場合、その上で[Caps Lock]を押せばいいのですが、「直接入力」から[カタカナ ひらがな]を2回押す方法もあります。
とにかく、[半角/全角]を何度押しても行ったり来たりするばかりで、「ひらがな」には戻れません。

御参考までに、次のような操作法も考えられます。
1.「ひらがな」→「全(半)角英数」は[Caps Lock]
2.「ひらがな」→「直接入力」は[半角/全角]
これは当たり前ですね。

3.「全(半)角英数」→「ひらがな」は[カタカナ ひらがな]
4.「直接入力」→「ひらがな」も[カタカナ ひらがな]
 * 1回押して「全(半)角英数」になったときは、続けてもう1回押す。
 (ややこしければ、常に2連打することにしてもよい。)

つまり[半角/全角]や[Caps Lock]をON/OFに使うのではなく、それぞれ一方通行にしておいて、
「ひらがな」に復帰するときはいつも[カタカナ ひらがな]を使うという方法です。

#2です。

質問者さんの使用法なら、必要はないでしょうが、
 >このキーの操作を、どちらも使えるよう、自分でコントロールしたい
ということなので、補足しておきます。

「全角英数」/「半角英数」を基本設定の優先順位と逆のほうにしたいときは、[Caps Lock]の後、[Shift]+[無変換]で行えます。

なお、ご存じかと思いますが、「全(半)角英数」から「ひらがな」に復帰するには、[Caps Lock]のほか[無変換]でも[カタカナ ひらがな]でも可能です。

ひとつ注意が必要なのは、これもご存じかも知れ...続きを読む

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では、「速度や耐障害・整合...続きを読む

QALT+半角/全角を押さなければ、文字を変換できません。

PCを立ち上げ、文字を最初に入力しようとすると、英数字で入力されます。

そこで、日本語に変換しようとするのですが、ALT+半角/全角を押さなければ、文字を変換できません。


その後は、半角/全角を押すだけで、変換できるようになります。



一番初めから、半角/全角を押すだけで、変換できるようにするためにはどうすればいいですか?



PC
dell 1525
WindowsVista Home Premium
http://www.sd-dream.com/pasocompass/PC/Dell/Inspiron1525.html

Aベストアンサー

自分の場合は既定の言語を
”日本語(日本)-日本語”から
”日本語(日本)-Microsoft IME”
にしたら半角/全角だけで変換できるようになりました。

QJavaで全角変換

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

Aベストアンサー

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング