0

ユーザーが入力した文字列をテキストビューに色付きで表示する関数を作成する必要があります。

^1Hi ^2 everyone::

  • "Hi" = 赤い色の前に "^1" があるから
  • "Everyone" = 前に "^2" があるので緑色。

したがって、次のような分割機能を使用する必要があると思います:

String txt = myEditText.getText().toString();
String[] splits = txt.split("\\^(\\d+)");

しかし、「^」の後に数字を入力する方法がわかりません。

そして、入力した数字で色を割り当てたいと思います。

そして、私は使用できると思います:

MyTextView.setText(HTML.fromHtml(myTextModifiedWithColor);

ですので、何かお気づきの点がございましたら、よろしくお願いいたします。

4

2 に答える 2

0

^単純な理由でのみ分割することをお勧めします。配列は、数字で終了^し、数字で始まる文字列で満たされます。

^最後の文字が a の場合は、表示したくないので、最後の文字を削除するだけで、すべての文字列を簡単に処理できるようになりました。さらに、各文字列の最初の文字を読み取り、それに応じて色を調整します。その文字も削除することを忘れないでください。

文字列をトリミングするには、 を使用することをお勧めしsubstring()ます。色を適用するには、switchステートメントを使用することをお勧めします。

また、最初の文字列は役に立たないか、数字で始まらない可能性があることを忘れないでください。いずれにせよ、すべての文字列の一貫性を必ず確認してください。また、マークアップを適用する別の方法を使用することを強くお勧めします。本当に凝りたい場合はreplace()、より複雑なメソッドを使用しRegExて、マークアップを適切なマークアップに置き換えてからHTML、 を使用してそのまま視覚化することができmyTextView.setText(Html.fromHtml(yourString));ます。

于 2013-08-28T08:35:02.090 に答える
0

このコードを試して、

  Pattern p = Pattern.compile("^(.*):([\\d\\.]+)/(\\d+)$");
Matcher m = p.matcher( someString );
if (m.find()) {
  m.group(1); // returns the text before the colon
  m.group(2); // returns the double between the colon and the slash
  m.group(3); // returns the integer after the slash
}
于 2013-08-28T08:35:21.313 に答える