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

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

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

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

Q&A

解決済

4回答

1161閲覧

C# 文字列から一部分を取得

_TAKU_now_

総合スコア12

C#

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

0グッド

1クリップ

投稿2016/10/19 01:11

編集2016/10/19 01:21

あるキーワードで後方一致する文字列から、
(キーワードを含めず)先頭からキーワードの前までの文字列を取得したい。

※キーワードの前の文字数は何文字でも動作するようにしたい


【キーワード「丼」】

【文字列】
・牛丼 →「牛」
・親子丼 →「親子」
・カルビ丼 →「カルビ」
・ロースかつ丼 →「ロースかつ」

IndexOfやSubstringメソッドを使うのかと思ったのですが、具体的にどのように記述するかわかりませんでした。

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

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

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

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

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

guest

回答4

0

こんなのでどうでしょうか?

C#

1var don = "丼"; 2var donmono = "親子丼"; 3var anser = donmono.EndsWith(don) ? donmono.Substring(0, donmono.Length - don.Length) : null;

投稿2016/10/19 01:30

編集2016/10/19 01:36
hihijiji

総合スコア4150

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

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

_TAKU_now_

2016/10/19 02:33

ありがとうございます。 文字数分でカットして抜き出す方法ですね 参考になりました、
hihijiji

2016/10/19 03:56

後方一致と言う条件があるので、ミソはEndsWithメソッドのほうですね。 例えば、以下のインプットがあった場合 "親子丼風牛丼" "牛丼コロッケ" 前者は"親子丼風牛"を、後者はnullを返します。
_TAKU_now_

2016/10/20 00:25

丁寧な回答と心使いありがとうございます。
guest

0

Replace関数は簡単で他にも応用が効きやすく便利です。

C#

1string gyudon = "牛丼"; 2string gyu = gyudon.Replace("丼","");//丼を空に置換する(削除と同じ効果を得られる) → "牛" 3string katsudon = gyudon.Replace("牛","カツ");//牛をカツに置換する → ”カツ丼”

投稿2016/10/19 02:08

編集2016/10/19 02:11
ishi9

総合スコア1294

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

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

_TAKU_now_

2016/10/19 02:27

ありがとうございます。 参考になりました。
guest

0

ベストアンサー

泥臭いやり方ですが・・・キーワードから対象文字列の位置を取得し、
その対象文字列の前までを抜き出してやるやり方があります。

C#

1var target = "丼"; 2var keyword = "カルビ丼"; 3 4var targetPosition = keyword.IndexOf(target); 5var kindOfDon = keyword.Substring(0,targetPosition);

index数値について間違えてたらごめんなさい。間違えていた場合、Substringの引数のtargetPositionの値を操作することで正しく取得できると思います。

投稿2016/10/19 01:34

s.t.

総合スコア2021

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

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

_TAKU_now_

2016/10/19 02:30

ありがとうございます。 私が(うまく出来ませんでしたが。。)やろうとしていたことです。 私が出来なかったのはSubstringの引数の部分が間違っていたようです。
guest

0

上手く投稿できませんでした。

投稿2016/10/19 01:27

編集2016/10/19 01:33
hihijiji

総合スコア4150

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問