• ベストアンサー

変数と日本語文字列を比較する方法とは?

いつもお世話になっております。 変数と日本語を比較する簡単な方法を教えてください。 <input type="submit" name="update" value="更新"> という更新ボタンをJSPから押すと、 public void doPost(HttpServletRequest request,HttpServletResponse) request.setCharacterEncording("Shit_JIS"); request.setContencType("text/html; charset=Shift_JIS"); String str = getParameter("name"); System.out.println("s="+ s);  で、str=更新という値を取得します。 このあと、 if(str=="更新")  { 更新用サーブレットへ }   else { それ以外の処理へ } としたいのですが、str=="更新"の比較ができず、if文が機能しませんでした。 コンソールへは「s=更新」と出力できるのですが。 日本語文字列の比較の問題と思うのですがリクエストの文字コードをShift-JISに設定するだけでは対応できないものなのでしょうか? どうぞよろしくお願いいたします。

  • Java
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
回答No.1

if(str.equals("更新")){ //だとどうなる?

mogu33mogu
質問者

お礼

取得できました! str.equals(文字列)は、このようなときに使うのですね。 勉強が足りなくてすみません。ありがとうございました!

その他の回答 (1)

回答No.2

とりあえずJavaの基礎をお勉強することをお勧めします。 http://msugai.fc2web.com/java/equals.html

参考URL:
http://msugai.fc2web.com/java/index.html#control
mogu33mogu
質問者

お礼

すみません、仰るとおりです。 Javaの基礎を勉強しつつなのですが、どうにも奥が深くて私にはまだあまり認識できてない状況です… 紹介していただいたサイトは知らなかったので、これからも勉強してきます

関連するQ&A

  • 文字列の比較について

    BufferedReaderでファイルを読んだのちに、見出しの文字列をカンマで分割して 文字列を比較しようとしています。 ですが、分割すると、文字列が別な文字コードによる表記に変わってしまいます。 なぜでしょうか? また、解決方法などのヒントなどあれば教えてください。 BufferedReader buffReader = new BufferedReader( new FileReader("/home/masa/Desktop/Sample.csv")); String s; int ini=0; int wamei=0; int i=0; while((s = buffReader.readLine())!= null){ String[] str = s.split(",", -1); //System.out.println(s); if (i == 0) { for(int j=0; j<str.length;j++){ System.out.println(String.toString(str)); if(str.equals("五十音")){ini = j;} System.out.println("五十音"+ini); if(str.equals("a")){wamei = j;} System.out.println("和名"+wamei); //System.out.println(j); } } i++;

    • ベストアンサー
    • Java
  • 日本語文字列の比較

    複数行のテキストボックスから日本語の文字を拾い出して 入力された文字と比較しようとしているのですが、 矢印の部分で、エラーが出て上手く処理ができません アドバイスをいただけないでしょうか Dim str As String   For i = 0 To TextBox1.Lines.Length → str = CStr(TextBox1.Lines(i + 1))        ・        ・        ・

  • doPost+doGet

    public class Class{ public void doPost (HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException try{ //処理 }catch(Exception e){ e.printStackTrace(); } } public void doGet (HttpServletRequest request,HttpServletResponse response){ try{ doPost(request, response); }catch(Exception e){ e.printStackTrace(); } } } この処理は、doGetで送信されたものをdoPostに送って処理するということでよろしいのでしょうか? 分かる方がいましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • 文字列比較の演算子

    Perl の世界から PHP にやってまいりました。 Perl では、文字列の比較には専用の演算子がありまして、 str1 eq str2 とすると、二つの文字列が同値かどうか調べられますが、PHP にはこのような演算子はないのでしょうか? www.php.net のマニュアルを見ても、そのような演算子がありません。 == 演算子が使えるものかと <?php $str1 = "this is string" ; $str2 = "this is string" if( $str1 == $str2 ) { echo "two string is same" ; } ?> などを試してみるとうまくいくようですが、www.php.net のマニュアルには「文字列を数値化して比較する」と書いてあり、本当に文字列比較が出来るか確信がもてず…。 結局、文字列を比較したいときには strcmp を呼び出していますが、これは PHP 的には正しいのでしょうか?

    • ベストアンサー
    • PHP
  • プログラミング ポインタを使った文字列比較

    プログラミング ポインタを使った文字列比較 2つの文字列str1, str2を入力し,それらが等しければ0,等しくなければ1を返す関数str_compareを作り、返り値によって以下のように表示するプログラムを作れ。ただし,関数strcmpを使ってはならない。 文字列の入出力はmain関数で行い,関数str_compareの仮引数にはポインタ変数を宣言し,ポインタと間接演算子*を用いた処理を行うこと。 % ./a.out input str1 = Worldcup input str2 = Worldcup same strings % ./a.out input str1 = World input str2 = cup different strings この問題に私は次のようにプログラミングしました。 #include <stdio.h> #define MAX 100 int str_compare(char *, char *); main() { char str1[MAX], str2[MAX]; printf("input str1 = %s", str1); scanf("%s", str1); printf("input str2 = %s", str2); scanf("%s", str2); str_compare(str1, str2); if (str_compare(str1, str2) == 0) printf("same strings\n"); else if (str_compare(str1, str2) == 1) printf("different strings\n"); } int str_compare(char *s1, char *s2) { int i; for (i = 0; s1[i] != '\0'; i++) { if (s1[i] != s2[i]) { break; } } if (s1[i] == s2[i]) { return 0; } else { return 1; } } これで実行したところ、「input str1 =」の右のスペースが文字化け?してしまいます。(半角カタカナや記号が出る)ただ、その後に文字列を入力すると、正しく機能します。 これは何が悪いなのでしょうか、どなたか教えてください。

  • PHPで文字列(日本語)の比較

    PHP5で文字列(日本語)の比較をして処理をしたいとおもっているのですが 意図した通りに動いてくれません。 <input type="submit" name="nihongo" value="日本語" /> としてPOSTで送信 PHP側で $nihongo = $_POST["nihongo"]; if($nihongo === "日本語"){ 処理 } としていますが「処理」の部分を通ってくれません。 trim($nihongo); とかも試してみたのですがだめでした。 おわかりの方がいましたら 宜しくお願いします。

    • ベストアンサー
    • PHP
  • JSPとサーブレット間での画面遷移でうまく表示できません。

    いつもお世話になっております。。。 eclipse3.4 tomcat6.0 の環境で作業しています。 JSPから受け取ったパラメータをサーブレットで条件分岐して、 条件ごとにdispatch fowardで異なったページに遷移させるページを作りたいのですが、うまくいきません。 送信JSPで、 <form action="受け取りサーブレット名" method="post"> <input type="radio" name="url" value="value1"checked> <input type="radio" name="url" value="value2"> <input type="radio" name="url" value="value3"> <input type="submit" value="jump!"> </form> と書き、受け取りでサーブレットで public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { perform(request, response); }      private void perform(HttpServletRequest request, HttpServletResponse response)         throws ServletException, IOException { response.setContentType("text/plain; charset=Windows-31J"); request.setCharacterEncoding("Windows-31J"); request.getParameter("url"); String i = request.getParameter("url"); if( i.equals("value1")) {           request.getRequestDispatcher("/遷移先1").forward(request,response); }else if(i.equals("value2")) {           request.getRequestDispatcher("/遷移先2").forward(request,response); }else if(i.equals("value3")) {           request.getRequestDispatcher("/遷移先3").forward(request,response); としています。 これでJSPからデバッグを実行すると、変数iにparam"url"でとってきた"value1"が入っているので、getParameterが成功しているのが分かりますが、その後なぜか遷移先に移りません。 おそらくdispaccher fowardがうまくいっていないか、 if文が間違ってるかだと思うのですが、 どなたかご教授くださいm(_ _)m

  • submitで日本語をおくりたい

    自分は現在JSPの勉強をしているのですが、JSPからサーブレットにsubmitをつかって、日本語を送信した場合文字化けして表示されてしまうので困っています。 ソースコードで説明させていただくと JSP側ソース <%@ page contentType="text/html;charset=Shift_JIS" pageEncoding="Shift_JIS" %> <html> <head><title>a</title></head> <body> <form action="Hello" method="post"> <textarea rows="10" cols="40" name="comment"> ここにコメントを書いて送信を押すとコメントがつきます </textarea><br> <input type="submit" value="送信"> </form> </body> </html> サーブレット側 import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class hello extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); response.setCharacterEncoding("Shift_JIS"); PrintWriter out = response.getWriter(); String msg = request.getParameter("comment"); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println(msg);//ここで表示 out.println("</body>"); out.println("</html>"); } } この様なソースを書いたのですが、サーブレット側で日本語を表示させようとすると、文字化けしてしまいます(英語は普通に表示されます)。 どのようにすれば、サーブレット側で日本語を表示できるのでしょうか? お返事おまちしております。

    • ベストアンサー
    • Java
  • 日本語文字列の正規表現

    いつもお世話になっております。 日本語文字列を含む正規表現で悩んでおります。 【比較対象の文字列】 $str1 = "<select name='se'><option value='あいう'>あいう</option><option value='abc'></option></select>"; 【正規表現で置換させたいところ】 $text = "あいう";//ここの箇所だけoption valueが変わるので変数にいれています。 <option value='$text'>$text</option>という文字列が一致したら <option value='$text' selected>$text</option>にselectedを追加して置換したいのです。 下記内容で作ってみたのですが どの辺りがダメなのか検討がつきません。。 恐らくダメなところだらけかと思うのですが。 分かりづらい説明で申し訳ないのですが どなたかご教授お願いします。 $rep ="<option value='".$text."' selected>".$text."</option>"; preg_replace("/<option\s+[^>]*value\s*=\s*([\'\"]?)".$text."([\'\"]?)\s*w+>".$text."<\s+\/\s+option\s+>/i",$rep,$str1,$str2);

    • ベストアンサー
    • PHP
  • getParameterとgetInitParameterの違いについて

    いつもお世話になっています。 現在HTMLファイルからServletを呼び出す処理を行っています。 Servletファイル側のdoPostメソッドのなかでよく記述してある HttpServletRequest.getparameter("パラメタ名")は HTMLファイルのFORMタグのなかにある情報を取得するものですが、 初期処理(initメソッド)でよく記述されている ServletConfig.getInitParameter("パラメタ名")は どこの情報を取得しようとしているものなのでしょうか? また public void doPost(HttpServletRequest request, HttpServletResponse response) という記述ではServletファイルが呼ばれた時に引数をrequestに取得しますが このときresponseの中身はNULLの状態なのでしょうか? responseの使い方がいまいちイメージできなくて。。 たくさん質問してすいません。 何かお気づきの方が居られましたら、ご教授ください。 宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう