質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

3回答

7127閲覧

とある文字列中の指定文字列の数をカウントし、別フォームに表示したい

bonjin1234

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

1クリップ

投稿2019/08/21 04:47

編集2022/01/12 10:55

前提・実現したいこと

C#ド素人です。タイトルの通りなのですが、例えばForm1であらかじめtextBox1に入力してある文字列中に、textBox2に入力した文字列がいくつあるかカウントしたものをForm2に表示するにはどのように組めばいいでしょうか。ご教授よろしくお願いします。

C#

1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Windows.Forms; 9 10namespace kadai10 11{ 12 public partial class Form1 : Form 13 { 14 public string sendText; 15 private void button1_Click(object sender, EventArgs e) 16 { 17 textBox1.Text = textBox1.Text.Replace(textBox2.Text, textBox3.Text); 18 19 //別ウィンドウを表示 20 Form2 formSub = new Form2(); 21 formSub.Show(); 22 23 } 24 25 private static int CountChar(string sendText, string c) 26 { 27 return sendText.Length - sendText.Replace(c.ToString(), "").Length; 28 } 29 30 static void notMain() 31 { 32 string tx1 = new textBox1.Text(); 33 string tx2 = new textBox2.Text(); 34 string sendText = CountChar(tx1, tx2)+"個の文字を置き換えました"; 35 } 36 } 37}

今このような感じです。実をいうとさらにtextBox3にtextBox2の文字列をどのように置き換えるのか入力し、textBox1の文字列を置き換える作業もあるのですが、こちらは自力でどうにかなっていると思います。 上のコードではtextBox1とtextBox2が'フィールド'なのに'型'のように使用されているとエラーが出ており、自分なりに解決策を調べてみましたがうまく見つかりませんでした。コード組むうえで根本的なことが間違っているかもしれません。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/21 04:52

どこまでできているのでしょうか。現在のコードと調べたこと試したことを記載してください。
退会済みユーザー

退会済みユーザー

2019/08/21 04:53

何かスクショなどわかりやすいものを載せてほしいです。
BluOxy

2019/08/21 04:56

textBox2.Textが"aba"でtextBox1.Textが"ababababa"だったときカウントは2ですか?4ですか?
m.ts10806

2019/08/21 04:58 編集

tonkoさん 提供してほしいものの例で「スクショ」は今回の場合不適当では?(何を想定しているのか私は分かりません。たぶん質問者さんはもっと分かりません)
bonjin1234

2019/08/21 05:08

BluOxyさん >textBox2.Textが"aba"でtextBox1.Textが"ababababa"だったときカウントは2ですか?4ですか? 2となるようお願いします。
bonjin1234

2019/08/21 05:11

↑Form1のコードです
退会済みユーザー

退会済みユーザー

2019/08/21 05:12

m.ts10806さん▶︎▶︎そうですね。もっとわからなくなりますね。 bonjin1234さんすみませんでした。
m.ts10806

2019/08/21 05:13

質問は編集できますので質問本文に追記してください。 見てお分かりかと思いますが、コメント欄ではマークダウンが使えませんしデフォルト非表示であるため目につきにくいです。
bonjin1234

2019/08/21 05:15

了解しました。申し訳ございません。
guest

回答3

0

textBox1.Text.Split(new string[] { textBox2.Text }, StringSplitOptions.None).Length - 1

このような方法もあります。textBox2 の文字列で textBox1 の文字列を分割して、いくつに分割されたかを調べています。

投稿2019/08/21 05:30

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2019/08/21 04:56

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

例えば,textBox1の文字列が"abcdef"で,textBox2の文字列が"XXX"だとしたら,

  • textBox1側の先頭3文字"abc" が "XXX" と等しいか?
  • 位置を1つずらした3文字"bcd" が "XXX" と等しいか?
  • 次の位置の3文字 "cde" が "XXX" と等しいか?
  • ...
  • "def" が "XXX" と等しいか?

…と最後まで調べて,等しい個数をカウントすれば良いのではないでしょうか.

投稿2019/08/21 04:56

fana

総合スコア11632

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問