• 締切済み

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

C#で string型の文字列で次の3つの処理をしたいのですが、具体的にどう記述すればよいでしょうか? string s = "ABCあいうDEおかFGHき"; int pos1 = ???? //(1)DEの位置を求める int pos2 = ???? //(2)FGHの位置を求める //(3)pos1とpos2を使って「おか」の文字列をtにセットする ????

みんなの回答

  • infeeld
  • ベストアンサー率37% (3/8)
回答No.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 クラスのリファレンスを参照してみて下さい。

すると、全ての回答が全文表示されます。
  • sygh
  • ベストアンサー率76% (42/55)
回答No.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;

すると、全ての回答が全文表示されます。
回答No.2

半角文字と全角文字が混在している文字列から、半角・全角の切れ目で文字列を抜き出したいということでしょうか? だとすると先頭から一文字ずつ半角か全角かを判定していくしかないと思います。 半角・全角の判定方法は、一文字だけSHIFT-JISに変換して、その一文字のバイト数で判定するしかないようですね。 ↓が参考になると思います。 http://7ujm.net/NET%20Framework/isOneByteChar.html

すると、全ての回答が全文表示されます。
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.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
すると、全ての回答が全文表示されます。

関連するQ&A