🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Q&A

2回答

395閲覧

c# 取り下げのため質問修正

yositigu

総合スコア17

C#

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

0グッド

1クリップ

投稿2021/02/25 02:27

編集2021/02/25 04:09

質問取り下げのため修正

c#

1質問取り下げのため修正

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

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

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

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

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

haihaikazuma

2021/02/25 02:35

どのようなエラーが発生しておりますでしょうか。 変更するのであればコード内で 削除:string pattern = " OR "; 変更:string[] arr = str.Split(" OR "); で済む問題ではないかと思います。
yositigu

2021/02/25 02:39

上記試したところ、エラーになってしまいました。  また文字列とORの間のスペースは1個以上の任意の数のスペースを入力されても対応できるようにしたいです。
dodox86

2021/02/25 02:46

「1文字以上の空白で囲まれた、大文字小文字を区別しない"OR"」の正規表現でSplitすれば良いと思います。
yositigu

2021/02/25 03:21

上記正規表現をうまく表現できず、ご教授いただけないでしょうか。
dodox86

2021/02/25 03:31

回答しましたのでそちらをご覧ください。
Zuishin

2021/02/25 04:14

え? なぜ取り下げ? サブアカウントのスコアを伸ばすための質問?
kaina

2021/02/25 04:16

回答を貰っているにも関わらず、理由も書かずにいきなり取り下げは無いでしょ。
m.ts10806

2021/02/25 04:49

単に質問修正しただけでは取り下げになりません。
退会済みユーザー

退会済みユーザー

2021/02/25 05:06

回答がついているのにそれに対してフィードバックを返さず質問を消去するのは無礼者のすること。
dodox86

2021/02/25 06:01

あら、知りたいというので回答したのですが、取り下げ(のつもり)ですか。しかしこの手の所業の動機を知りたいですね。「欲しい答えはもう得たから証拠隠滅」のつもりなのか。本当に消したいのであれば、teratail運営にご相談ください。
Zuishin

2021/02/25 06:55

こういう質問者増えましたね。最近は回答したとたんに質問者が音信不通になるものばかりです。
退会済みユーザー

退会済みユーザー

2021/02/25 07:34 編集

https://teratail.com/questions/history-questions/324548 文を上書きして消したつもりになってるんでしょうが、きちんと履歴に残りますので無駄です。teratailでは、自分勝手な理由での質問・回答の削除は出来ません。削除ポリシーに反した行為をした質問者という汚名のみが残ります。質問を元に戻し、回答者に対して適切に対応を行えばまだ取り返しが付くかもしれません。 [投稿の削除ポリシー] https://teratail.com/help/delete-policy
guest

回答2

0

「前後を1文字以上の空白文字で囲まれた文字列"OR"で、パターン利用時に大文字小文字を区別しない」正規表現でのコード例です。

C#

1using System; 2using System.Text.RegularExpressions; 3 4namespace test 5{ 6 public class Program 7 { 8 static void Main(string[] args) 9 { 10 // 前後が1文字以上の空白文字で囲まれた"OR" 11 // パターンの利用時、大文字小文字を区別しない 12 string pattern = @"\s+OR\s+"; 13 14 string str; 15 string[] arr; 16 17 str = "AAAA OR BBBB"; 18 arr = Regex.Split(str, pattern, RegexOptions.IgnoreCase); 19 Console.WriteLine("{0}", string.Join(",", arr)); 20 21 str = " AAAA OR BBBB or CCC Or DDD"; 22 arr = Regex.Split(str, pattern, RegexOptions.IgnoreCase); 23 Console.WriteLine("{0}", string.Join(",", arr)); 24 } 25 } 26}

実行例です。

CMD

1C> bin\Debug\ConApp1.exe 2AAAA,BBBB 3 AAAA,BBBB,CCC,DDD 4 5C>

区切る為の文字列が「前後を1文字以上の空白文字で囲まれた文字列"OR"」であることにご注意ください。

投稿2021/02/25 03:30

dodox86

総合スコア9256

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

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

dodox86

2021/02/25 03:47

正規表現は難しいものは難しいですが、本質問くらいのものだと「空白文字("\s")が1個以上("+")続く文字列で囲まれた"OR"」、つまり"\s+OR\s+"、とのように、まさに口で話すように表せることも多いので、ある程度でも習得するととても便利です。
guest

0

Splitだけで行うことにこだわらなければ、こんな感じですかね。

C#

1using System; 2using System.Text.RegularExpressions; 3 4namespace test 5{ 6 class Program 7 { 8 static void Main() 9 { 10 11 string str = "AAAA or BBBB OR CCCC"; 12 13 // 空白の全削除 14 str = Regex.Replace(str, @"\s", ""); 15 16 // パターン生成 17 string[] pattern = { "OR", "or" }; 18 19 // 分解 20 var arr = str.Split(pattern, StringSplitOptions.RemoveEmptyEntries); 21 22 Console.WriteLine("{0}", string.Join(",", arr)); 23 24 Console.ReadKey(); 25 } 26 } 27}

あらかじめ、空白を半角・全角問わず排除して、ORのパターンで分解すればよいと思いました。
参考までに。

投稿2021/02/25 03:06

編集2021/02/25 03:07
haihaikazuma

総合スコア181

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

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

Zuishin

2021/02/25 03:11

どうせ正規表現を使うなら正規表現の Split を使えば一度で済むのでは?
Zuishin

2021/02/25 03:18

orz のように単語の中に入っている or の処理もどうするかわからないし。
yositigu

2021/02/25 03:20

AAAAという単語は一例でした。 AORA OR BBBB というように単語の中にORという文字が入る場合があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問