C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ""で囲まれた文字の色を変えたい


(過去ログ 14 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■4419 / inTopicNo.1)  ""で囲まれた文字の色を変えたい
  
□投稿者/ blanco (1回)-(2007/06/16(Sat) 21:31:01)

分類:[C# (Windows)] 

2007/06/17(Sun) 00:27:43 編集(投稿者)
2007/06/17(Sun) 00:27:38 編集(投稿者)

Windowsアプリを作っていたのですが、わからなくなったので質問させてください。

richtextbox内で""で囲まれた部分だけ文字列の色を変えたいのですが、やり方が
わかりませんでした。selectedtextとかselectioncolorとか、findメソッドが
使えそうということはわかったのですが。。。

たとえば

あい"う"えおかきく"けこ"さし"すせそ"

こういう文字列の場合はどうしたらよいのでしょうか?
ご教示宜しくお願いいたします。
引用返信 編集キー/
■4421 / inTopicNo.2)  Re[1]: ""で囲まれた文字の色を変えたい
□投稿者/ iwaiwa (19回)-(2007/06/17(Sun) 00:55:27)
言語が分からないのがちょっとあれですけど、、、

文字列で"の位置を取得して配列に格納
→文字列の「配列の偶数番目+1〜配列の奇数番目-1」までの文字の色を変える

というロジックで組んでみてはいかがでしょう?
引用返信 編集キー/
■4432 / inTopicNo.3)  Re[1]: ""で囲まれた文字の色を変えたい
□投稿者/ ガッ (2回)-(2007/06/17(Sun) 21:24:57)
揚げ足を取るようで苦しいですが、気になった点をつらつらと書き綴っていきます。
・例文に""で囲まれた部分がない。
 →例が悪いのか、目的が違うのか不明です。
・仮に"で囲まれた部分であった場合、例文がどのように色づけされるのか一意ではない。
 →例文は「あい"う"えおかきく"けこ..」 なので、
  「"う"」「"えおかきく"」が色づけされるわけですがどうも違うように見受けられます。
  また、例文が「あい"うえおかき」の様に"で囲まれていないといった例外の対処も不明です。

引用返信 編集キー/
■4433 / inTopicNo.4)  Re[2]: ""で囲まれた文字の色を変えたい
□投稿者/ はつね (183回)-(2007/06/17(Sun) 22:43:48)
はつね さんの Web サイト
No4432 (ガッ さん) に返信
> ・例文に""で囲まれた部分がない。

あい "う" えおかきく "けこ" さし "すせそ"
   〜       〜〜    〜〜〜

ではなくて?

引用返信 編集キー/
■4448 / inTopicNo.5)  Re[3]: ""で囲まれた文字の色を変えたい
□投稿者/ blanco (2回)-(2007/06/18(Mon) 13:09:41)
No4433 (はつね さん) に返信
> ■No4432 (ガッ さん) に返信
>>・例文に""で囲まれた部分がない。
>
> あい "う" えおかきく "けこ" さし "すせそ"
>    〜       〜〜    〜〜〜
>
> ではなくて?
>

はつねさんの仰る通りで"で囲まれた"う"と"けこ"と"すせそ"の部分の色を変えたかったのです。
iwaiwaさんのやり方もやろうと思ったのですが、思うようにロジックが浮かびませんでした。
他に方法はないでしょうか?なければ、もう少し勉強し直しますが。。
引用返信 編集キー/
■4456 / inTopicNo.6)  Re[4]: ""で囲まれた文字の色を変えたい
□投稿者/ mあ (11回)-(2007/06/18(Mon) 15:05:28)
2007/06/18(Mon) 15:13:22 編集(投稿者)
プレビューで見てから投稿しようとしたら入力ミスで投稿失敗。
よく見たら、苦労した入力が全部消えてるし・・・・
でも、良かった、、、、正規表現は難しい・・・

■No4448 (blanco さん) に返信
> はつねさんの仰る通りで"で囲まれた"う"と"けこ"と"すせそ"の部分の色を変えたかったのです。
> iwaiwaさんのやり方もやろうと思ったのですが、思うようにロジックが浮かびませんでした。
> 他に方法はないでしょうか?なければ、


>>もう少し勉強し直しますが。。
例です。No2 と No3 の微妙な不明瞭点を盛り込んでありますが、微妙だけに何かが足りない
ものになっています。言語は、嫌味ではないのですが、JavaScript です。C#に直してくださいね。

こぴぺして、test.html で保存、実行すれば結果が出てきます。

<script>
str = "'AB'CDEF'GH''IJK'LMN";

replaceQuote("tomato", str);

function QuotedString(qStr, bQuoted) {
	this.s = qStr;
	this.b = bQuoted;
	this.toString = function() {
		if (this.b) return "<RED>" + this.s + "</RED>";
		else return this.s;
	}
}
function replaceQuote(color, inStr) {

	var q = false;
	var qArr = [];
	var ss = "";
	for (var i=0;i < inStr.length;i++) {
		var cc = inStr.charAt(i);
		if (cc == "'") {
			if (inStr.charAt(i+1) != "'") {
				qArr.push(new QuotedString(ss, q));
				q = !q;
				ss = "";
			}
			else {
				ss += cc;
				i++;
			}
		}
		else {
			ss += cc;
		}
	}
	if (ss.length > 0) qArr.push(new QuotedString(ss, q));

	ss = "";
	for (var i=0;i < qArr.length;i++) {
		ss += qArr[i].toString() + "\n";
	}
	alert(ss);

}



</script>

引用返信 編集キー/
■4553 / inTopicNo.7)  Re[4]: ""で囲まれた文字の色を変えたい
□投稿者/ 特攻隊長まるるう (64回)-(2007/06/18(Mon) 17:54:29)
No4448 (blanco さん) に返信
>iwaiwaさんのやり方もやろうと思ったのですが、思うようにロジックが浮かびませんでした。
いや、ロジック(論理,理論、プログラムの流れ)は、具体的に書いてくれてるやん。><
実際のコードが浮かばないのは、勉強するしかないでしょ?

>文字列で"の位置を取得して配列に格納
文字列・配列なんて基礎学習なんだから、それができないならプログラム自体できないのでは?
文字の位置取得についてはメソッド(関数)が用意されています。

というか思い浮かぶ必要が無いですよね?ロジックを書いてくれているので
それに沿う形で調べれば分かります。
…とかいうと『自分なりに調べましたが分かりません』というのでしょうが、
その場合は、いつも実行している調査方法を具体的に示してください。

掲示板で回答をしている人でも、これだけ複雑化してきた環境で、すべての
内容を記憶するのは難しいのです。ボクに限って言えば、ほとんどの内容は
その場で検索して回答をつけています。調べられないのは調べ方が悪いのです。
悪い部分を指摘しますので、自分の調査方法を具体的に書き込んでください。

>→文字列の「配列の偶数番目+1〜配列の奇数番目-1」までの文字の色を変える
文字列・配列の操作方法が分かれば問題なく理解できると思います。

一番、基礎的な方法を示されて
>他に方法はないでしょうか?
それは無いでしょう。。。

引用返信 編集キー/
■4716 / inTopicNo.8)  Re[5]: ""で囲まれた文字の色を変えたい
□投稿者/ iwaiwa (24回)-(2007/06/22(Fri) 20:04:40)
一応できると言ったので、C#で作ってみました。
実際に作ると結構面倒でした(笑)
必ずしもベストとは言えませんが、参考にどうぞ。

-----
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
const string value = "\"";
string text = richTextBox1.Text;

List<int> list = new List<int>();

int startIndex = 0;
int index = text.IndexOf(value, startIndex);

while (index != -1)
{
list.Add(index);

startIndex = index + 1;
index = text.IndexOf(value, startIndex);
}

// 文字色を設定
Color selectionColor = Color.Red;

for (int i = 0; i < list.Count - 1; i += 2)
{
richTextBox1.Select(list[i] + 1, list[i + 1] - list[i] - 1);
richTextBox1.SelectionColor = selectionColor;
}
}
}
}
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -