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

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

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

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

Q&A

解決済

4回答

2769閲覧

C#で特定の文字列とそれ以降を置換したい場合

nyamuii

総合スコア10

C#

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

0グッド

0クリップ

投稿2021/07/26 05:28

編集2021/07/26 07:58

C#で特定の文字列とそれ以降を置換したい場合

例えば、都道府県+市町村の文字列
"岡山県岡山市"
の場合、県名だけを取り出すため、"県岡山市"→""に置換したいのですが、
必ず岡山市という文字列が来るわけではないため、
県とそれ以降の文字列を空欄に置換したいです。
Excelでいう"県*"を""にしたいです。

C#では上記のようなことは可能でしょうか?

試したことは下記のものですが、これでは置換されませんでした。

C#

1str.Replace("県*","");

ご教授願います。

(追記)
都道府県に関しては例でして、
C#で特定の文字列とそれ以降すべてを置換する方法をご教授願います。
"ABCDAAAAAAA"→"AB"に。"CD"という文字列があったら"CD"とそれ以降の文字列を全部空文字に置換したいです。
拙い質問文で申し訳ございません。

(追記)
実際に置換したい文字列は、"test_0726_01.csv"です。
構成としては[任意の文字列][本日の日付][01または02].csvです。
ここから[任意の文字列]を抽出したいです。(”test”)

解決方法として、本日の日付以降を空白にしたらtestを抽出できると考えておりまして、イメージは下記の通りです。

C#

1string fileName = "test_0726_01.csv"; 2string date = DateTime.Now.ToString("yyyyMMdd"); 3string str = fileName.Replace("_" + date + <ここが分からない>, ""); // str = "test"にしたい

C#

1string str = fileName.Replace("_" + date + "_01.csv", ""); 2str = fileName.Replace("_" + date + "_02.csv", "");

上記で置換はできるのですが、date以降の文字列全部置換できる関数?があれば教えて頂きたいと思っております。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/07/26 05:57

> 県とそれ以降の文字列を空欄に置換したいです。 北海道とか東京都とか大阪府とかはどうするのでしょう?
nyamuii

2021/07/26 07:10

ありがとうございます。 都道府県に関しては例として示しただけですので、実際は都道府県を置換したいわけではなく Excelでいうアスタリスクの役割をする方法をご教授ねがいます。。
退会済みユーザー

退会済みユーザー

2021/07/26 07:33 編集

> Excelでいうアスタリスクの役割 残念ながら自分は Excel は分かりません。「C#で特定の文字列・・・」とのことですので、Excel を知らなくても C# を知っていれば分かるように説明してください。 例えば "ABDCDCDXCD CDCDAAAAA" とかでしたらどうするのでしょう?
nyamuii

2021/07/26 07:55

返信ありがとうございます。説明不足で申し訳ございません。 実際に置換したい文字列は、"test_0726_01.csv"です。 構成としては[任意の文字列]_[本日の日付]_[01または02].csvです。 ここから[任意の文字列]を抽出したいです。(”test”) 解決方法として、本日の日付以降を空白にしたらtestを抽出できると考えておりまして string fileName = "test_0726_01.csv"; string date = DateTime.Now.ToString("yyyyMMdd"); string str = fileName.Replace("_" + date + <ここが分からない>, ""); // str = "test"にしたい です。 string str = fileName.Replace("_" + date + "_01.csv", ""); str = fileName.Replace("_" + date + "_02.csv", ""); で置換はできるのですが、date以降の文字列全部置換できる関数?があれば教えて頂きたいと思っております。
退会済みユーザー

退会済みユーザー

2021/07/26 08:42 編集

抽出したいだけなら置換する必要は無くないですか?基礎的な文字列操作なので、回答付いてる方法含めて色々やり方ありますけど。 既にいくつかの方法が回答ついていますが、それらの方法でいけるのかダメなのか、ダメなら何故ダメなのかをコメント付けましょう。
退会済みユーザー

退会済みユーザー

2021/07/28 02:12

質問者さん、無言だけど、回答がついているのでそれらに対するフィードバックを書こう。役に立った/多々かなったぐらいは書けるのでは? 役に立たなかったのなら、どこがダメだったのかを書くとより期待に近い回答が出てくるかも。とにかく無言で放置は NG です。
guest

回答4

0

ベストアンサー

構成としては[任意の文字列][本日の日付][01または02].csvです。
ここから[任意の文字列]を抽出したいです。(”test”)

String.Split メソッドを使って '_' でスプリットして String 型の配列を取得し、配列の最初の要素を取得すれば良さそうですが? それでダメならその理由を書いてください。

投稿2021/07/26 08:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

何か{短い,かっこいい}書き方が欲しいとかじゃなければ,
愚直に切り張りすればよいのでは.

Csharp

1string A = "ABCDEEEEEF"; //大元の文字列 2 3string HeadPartOfBefore = "CD"; //置換対象文字列の先頭部分 4string After = "(^_^)"; //置換後文字列(空にしたいだけならコレ要らないですが) 5 6int index = A.IndexOf( "CD" ); 7if( index >= 0 ){ A = A.Substring( 0, index ) + After; }

投稿2021/07/26 07:34

fana

総合スコア11708

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

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

0

str.Replace("県*","");

これでは無理ですね
正規表現を使いましょう

投稿2021/07/26 05:32

y_waiwai

総合スコア87800

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

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

0

"県"の場所を見つけて、それより前を取り出すとか

追記に対してもその文字列の位置より前を取り出すので問題がないのでは?
問題があるようでしたら例を提示するなど問題点を提示してください。

投稿2021/07/26 05:31

編集2021/07/26 07:18
YAmaGNZ

総合スコア10294

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

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

YAmaGNZ

2021/07/26 07:21

正規表現での置換でも問題はないでしょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問