2016-05-29 4 views
0

文字列の色を* *に変更しようとしていますが、コードで問題が発生しました。アプリケーションは終了です。 すべての「注意」"*"が含まれていること(すなわちThis is * good *)「良い」という言葉の残りの部分の色を変更し、UPDATE "*"文字Android:文字列から色を変更しようとしています

if(nota != null){ 
     if(nota.contains("* *")){ 

     nota = nota.replace("* *",""); 

     Spannable spannable = new SpannableString(nota); 
     spannable.setSpan(new ForegroundColorSpan(Color.YELLOW), nota.indexOf("* *"), nota.indexOf("* *") + "* *".length(),  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     txtnota.setText(spannable); 

    } 
    } 

を消去する必要があります。私はこのコードを試してみましたが、それは部分的である

言葉(私は望んでいない特定の単語)着色:私が見ることができるように

if(nota != null){ 
     int firstIndex = nota.indexOf("*"); 
     if (firstIndex >= 0) { 
      nota = nota.replaceFirst("[*]{1}", ""); 
      int secIndex = nota.indexOf("*"); 
      if (secIndex >= 0) { 
       nota = nota.replaceFirst("[*]{1}", ""); 

       Spannable spannable = new SpannableString("➥ "+nota); 
       spannable.setSpan(new ForegroundColorSpan(Color.YELLOW), firstIndex, secIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
       spannable.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD_ITALIC), firstIndex, secIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

       txtnota.setText(spannable); 
      } 
     } 
} 
+0

logcatで例外が発生していますか? – RominaV

+0

2つの星のインデックスが見つかった場合、文字通り文字列 '' * * "'を探しているときに2つの星の間の単語は見つかりません –

答えて

0

は、最初に「*」の文字を削除し、そのあとはindexOfのその文字を呼び出していますが、それを任意のを持っていませんより多く、あなたは否定的な結果を得る。スパンを設定した後、置換命令を移動します。そして、 "* *"はチェックしてはいけませんが、 "*"の最初の発生については、スパンを設定した後、 "*"を2回削除してください。インデックスを保持することもできます。コードの例を次に示します。

if(nota != null){ 
      int firstIndex = nota.indexOf("*"); 
      if (firstIndex >= 0) { 
       nota = nota.replaceFirst("[*]{1}", ""); 
       int secIndex = nota.indexOf("*"); 
       if (secIndex >= 0) { 
        nota = nota.replaceFirst("[*]{1}", ""); 

        Spannable spannable = new SpannableString(nota); 
        spannable.setSpan(new ForegroundColorSpan(Color.YELLOW), firstIndex, secIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
        txtnota.setText(spannable); 
       } 
      } 
    } 
+0

あなたのコードを試しました。しかし、何も起こらなかった。私はnota内の文字列を持っています、例えば "これは* good *"、星は消えず、goodは黄色に変わりませんでした。 –

+0

私に説明しましょう:私はスターのキャラクターを消去したい、そして、これの後ろ、またはこれらの間に来るものは、*色を変えなければならない....フレーズ全体ではない。 *文字でちょうど言葉:これはmini-Markdownの書式のように*良い*です。 :) –

+0

それは私に変わるので、別の場所に間違いがありますか? – Rucsi

関連する問題