2016-08-13 5 views
0

なぜ私は文字列を変換するだけでは機能しないのですか?(の文字を変換したい場合はが動作しますが、 文字の連鎖をに変換するだけではできません)。私は何かが欠けていたか?ありがとうございました!JavaScriptで文字列を変換する(もはや動作しません)

var kkma_conv = { 
 
    // comments blablabla 
 
    '시/EPH': '', 
 
} 
 

 
function conversion_final(kkma) { 
 
    var roman = kkma_conv[kkma]; 
 
    if (roman) { 
 
    return roman; 
 
    } else { 
 
    return kkma; 
 
    } 
 
}
<script> 
 
    function printconvert(form2) { 
 
    var testin = document.form2.entree.value; 
 
    var res = conversion_final(testin); 
 
    document.form2.sortie.value = res.replace(/&#39;/g, "'"); 
 
    } 
 
</script> 
 

 
<table width="100%" border="0" align="left" cellpadding="0" cellspacing="0"> 
 
    <FORM NAME="form2"> 
 
    <tr> 
 
     <td> 
 
     <div align="left">Insert text :</div> 
 
     </td> 
 
     <td> 
 
     <textarea name="entree" value="input" rows="30" cols="75" style="font-size:12px"></textarea> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td></td> 
 
     <td style="padding:5px"> 
 
     <INPUT TYPE="button" NAME="bouton" VALUE="CONVERT" onClick="printconvert(form2)"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <div align="left">Conversion :</div> 
 
     </td> 
 
     <td> 
 
     <textarea name="sortie" value="output" rows="30" cols="75" style="font-size:12px"></textarea> 
 
     </td> 
 
    </tr> 
 
    </FORM> 
 
</table>

+0

次のように変更してください:if(roman!== undefined){ –

+0

ありがとうございます!あなたのメソッドは動作しますが、それはちょうど "シ/ EPH"と書かれている場合に限ります( "シ/ EPH"の後にスペースを入れて、それは再び変換されません) – user2911849

+0

@ user2911849最後にスペースを追加すると、 kkma_conv'はプロパティを持たないので、 'conversion_final'関数で' roman'は未定義となり、入力を再び返します。 – ASDFGerte

答えて

2

conversion_final("시/EPH")kkma_conv[kkma]が故に、それが入力を返し、falsyあるemptry文字列であるため、"시/EPH"を返します。

また、&#39;は多分HTMLの一部の記号ですが、javascriptでは表示されませんが、私はあなたが何をしたいのかは分かりません(問題ではないかもしれません)。

+0

あなたの答えをありがとうが、私はなぜあなたが言うようにそれが空であるか分からない。 P.S. 'は、入力に "''が含まれていないため便利ではありませんが、後で – user2911849

+1

@ user2911849という文字列が含まれている可能性があります。コードでは''cy/EPH ':' ''と定義されています。もう一度、javascriptで、/ ' /g.test( "'")=== false' – ASDFGerte

+0

私はそれを得たことに注意してください!ありがとう!私はそれを削除するために偽を作った。私は問題が何であるかを正確に知っていると思うが(しかし、私はその解決策を知らない。) - >スクリプトは単一の文字を変換するだけだ(私は 'q'を試した: 'ga' qq ':' ga '、' qq 'を返す) – user2911849

1

''ブール式はfalseに評価されます。したがって、if文は失敗し、else文が実行されます。したがって、conversion_final関数を次のように書き直す必要があります。

function conversion_final(kkma) { 
    if (kkma_conv.hasOwnProperty(kkma)) { 
     return kkma_conv[kkma]; 
    } 
    else { 
     return kkma; 
    } 
} 
+0

あなたの編集された代替ソリューションははるかに少ない方法です。 'toString 'のような文字列を提供する人がいた場合、' replace'メソッドは 'printconvert'の最後の行にエラーを投げます。 –

+0

@JasonCustああ!あなたが正しい。私は自分の答えを更新する –

+0

あなたの助けてくれてありがとうFrogatto(それは1つの "シ/ EPH"の出現のためだけに働く;私のコーパスには "シ/ EPHアダカード時/ EPH "?) – user2911849

関連する問題