こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

C#で string型の文字列で次の3つの処理をしたいのですが、具体的

C#で string型の文字列で次の3つの処理をしたいのですが、具体的にどう記述すればよいでしょうか?


string s = "ABCあいうDEおかFGHき";

int pos1 = ???? //(1)DEの位置を求める
int pos2 = ???? //(2)FGHの位置を求める

//(3)pos1とpos2を使って「おか」の文字列をtにセットする
????

投稿日時 - 2010-07-05 21:44:27

QNo.6017986

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

こんな感じでどうでしょう。

int pos1 = s.IndexOf("DE"); //(1)
int pos2 = s.IndexOf("FGH"); //(2)

//(3)
string result = s.Substring(0, pos1 + "DE".Length) + "t" + s.Substring(pos2);


"おか" を "t" に置き換えるだけであれば、以下のような方法もあります。
string result = s.Replace("おか", "t");


・・・的を得た回答であれば良いのですが。

他にも色々な機能がありますので、string クラスのリファレンスを参照してみて下さい。

投稿日時 - 2010-07-07 01:28:33

ANo.3

少々オーバースペックですが、正規表現を使うと、(1)と(2)を飛ばして(3)を求めることも出来ます。

using System;
using System.Text.RegularExpressions;
……
const string s = "ABCあいうDEおかFGHき";
var regex = new Regex(@".+DE(?<target>.+)FGH");
var match = regex.Match(s);
string t = match.Groups["target"].Value;

投稿日時 - 2010-07-06 23:07:23

ANo.2

半角文字と全角文字が混在している文字列から、半角・全角の切れ目で文字列を抜き出したいということでしょうか?
だとすると先頭から一文字ずつ半角か全角かを判定していくしかないと思います。
半角・全角の判定方法は、一文字だけSHIFT-JISに変換して、その一文字のバイト数で判定するしかないようですね。

↓が参考になると思います。
http://7ujm.net/NET%20Framework/isOneByteChar.html

投稿日時 - 2010-07-05 22:34:55

ANo.1

(1)(2)
int pos1 = s.IndexOf("DE"); // FGHも同じ

(3)
実際には"おか"の位置を取得した方がいいでしょうが、
string t = s.Substring(pos1 + 2, pos2 - (pos1 + 2));

以上全て、MSDN Library参照です。

参考URL:http://msdn.microsoft.com/ja-jp/library/system.string(VS.80).aspx

投稿日時 - 2010-07-05 22:20:45

あなたにオススメの質問