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

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

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

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

1944閲覧

文字で書いた記号を記号に直すには

BRAK

総合スコア98

C#

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

1クリップ

投稿2020/12/23 01:24

編集2020/12/23 02:46

文字で書いた記号を記号として扱うにはどういう変換方法があるか教えていただきたいです

目的 文字列の式を動的に解釈したい

C#

1コード 2int a = 0; 3string str = "a < 1"; 4 5//このような値と文字で書かれた式を 6 7if(a < 0) Console.WriteLine(""); 8//こういう形に変換したい

考えたことは、文字"a"をclassにあるaに参照して変数を取り出して、0は数値として見分ける。
文字"<"はSiwtch文で

C#

1コード 2string code = "<"; 3switch (code) 4 { 5 case "<": 6 //bool型の関数に割り当てる 7 bool result = a < 0; 8 break; 9 case ">": 10 //bool型の関数に割り当てる 11 bool result = a > 0; 12 break; 13 }

実際にはビジュアルスタジオにはstring str = "a < 1";は書かずに、ノベルゲーム内の読み込むシナリオ(外部ファイル)の次のステップに進む条件でa < 1と書きます。

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

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

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

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

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

y_waiwai

2020/12/23 01:25

質問が意味不明です まず、なにをしたいのかを説明されては
BRAK

2020/12/23 01:26

文字で書いた記号を記号に変換の仕方です。
y_waiwai

2020/12/23 01:27

あなたはなにをしたくて記号を変換したいんでしょうか。
退会済みユーザー

退会済みユーザー

2020/12/23 01:28

> if(a ">" 1)の場合 この">"はどのように記号として変換できるかを知りたいです。 意味が分かりません。if(a ">" 1) とかは C# の文法的にも成り立たないし・・・
BRAK

2020/12/23 01:30

例えがおかしかったかもしれないですね。 "a > 1" これの文字で書いた記号">"はどのようにダブルクオーテーションを廃した記号(>)として変換する方法です。
Zuishin

2020/12/23 01:33

やろうと思えばソースジェネレーターや式木やデリゲートでできなくはありませんが、そのようなことはしません。元々の目的を果たすためのもっと良い方法があるはずです。
退会済みユーザー

退会済みユーザー

2020/12/23 01:37 編集

依然として意味不明です。とんでもなく斜め上のことを考えているような気がします。そもそものやりたいこと(あなたの言う「ダブルクオーテーションを廃した記号」をどういう目的でどのように使いたいか)を書いた方が良さそうです。
退会済みユーザー

退会済みユーザー

2020/12/23 01:44 編集

記号というのが何を意味しているかが不明なので、回答者に判るように書いてください。 stringからchar一文字を切り出したいということですか?stringに含まれるダブルクォーテーション文字を除去したいということですか?
dodox86

2020/12/23 01:43

ほんとに分からないですね。文字列である">"を「大なり」の意味を成す式の記号にするのはどうしたら?と言うことでしょうか。目的として、 文字列の式を動的に解釈したいとか。質問からは読み取れませんね。
BRAK

2020/12/23 01:47

質問伝達能力皆無です。
BRAK

2020/12/23 01:48

dodox86さんのおっしゃる通りです。
Zuishin

2020/12/23 01:50

やろうと思えばソースジェネレーターや式木やデリゲートでできなくはありませんが、そのようなことはしません。元々の目的を果たすためのもっと良い方法があるはずです。
退会済みユーザー

退会済みユーザー

2020/12/23 01:51

int a = 0; string str = "a < 1"; という定義がされていたとして、if (str) のようにして true と判定するようにしたいということ?
Zuishin

2020/12/23 01:51

もう一度言いましょうか?
BRAK

2020/12/23 01:51

はい!
Zuishin

2020/12/23 01:52

ではもう一度。 やろうと思えばソースジェネレーターや式木やデリゲートでできなくはありませんが、そのようなことはしません。元々の目的を果たすためのもっと良い方法があるはずです。
Zuishin

2020/12/23 01:55

念のためもう一度。中学生程度の能力があるならそろそろググって理解できるはず。 やろうと思えばソースジェネレーターや式木やデリゲートでできなくはありませんが、そのようなことはしません。元々の目的を果たすためのもっと良い方法があるはずです。
BRAK

2020/12/23 01:56

元々の目的を果たす良い方法とは、文字列で比較するのではなく別の方法を考えるべきということですか?
BRAK

2020/12/23 01:58

ソースジェネレーターや式木やデリゲートこの辺は最初に言われて即ググりましたよ。
Zuishin

2020/12/23 01:59

まず元々の目的を書かなければ伝わりませんが、ググってわからないならしょうがないですね。
BRAK

2020/12/23 02:04 編集

昨日丸一日ググってもわからなかったので最終手段としてここで聞いています。 元々の目的は、外部ファイルで文字として書かれた "a < 1"をC#にもってきて文法に合うように変換するにはです。
Zuishin

2020/12/23 02:04

ググった結果、それがこの質問にどう関連するかわからないのでは、どのように説明しても無駄でしょう。
Zuishin

2020/12/23 02:07

> そのようなことはしません。 この意味もわからないということですよね。元々の目的を書いていないので、実際に何がしたいのか伝わりませんが、あなたのしようとしていることは、ほんの少しの手間でできることをわざわざ無駄に大きな方法を使っているようにしか見えません。
退会済みユーザー

退会済みユーザー

2020/12/23 02:12

XY 問題になっていると思います。Y だけでなく X も書いてもらえるとより的確な回答が得られるのではないかと思います。
BRAK

2020/12/23 02:26

上の質問でもう一度書き直しますが、 目的は、文字列の式を動的に解釈したい。 解決策は考えれるのは">"をSiwtch文を使って、この文字ならもともと書式で書いた式に割り当てるくらいです。 また、元々知りたいことは上で書いた通り、stringで書いた記号をstringを廃した記号に変換するということです。
Zuishin

2020/12/23 02:30

私が「書いていない」と言っているのは、なんのために文字列の式を動的に解釈したいのかという目的のことです。
退会済みユーザー

退会済みユーザー

2020/12/23 02:33 編集

> 目的 文字列の式を動的に解釈したい それは「目的」ではなくて、その上のレイヤーにある目的を果たすための手段に過ぎないのでは? つまり、依然として XY 問題の Y を書いていて、X が書いてないと思うのですが・・・ そうではなくて、目的だというなら Zuishin さんのコメントを参考に自助努力でできるところまでやってみては?
BRAK

2020/12/23 02:45

書き直しましたが言ってることは同じで伝わりにくいと思います。
ozwk

2020/12/23 02:46 編集

(すれ違いました)
BRAK

2020/12/23 02:48 編集

質問内の一番下に書いてます。 ノベルゲーム内の読み込むシナリオ(外部ファイル)の次のステップに進む条件でa < 1と書きます。 それと、興味本位というのも混じっています。
Zuishin

2020/12/23 02:58

いえ、これならわかります。 単純な構文しか無いなら、私ならデリゲートを Dictionary に入れますが、それをしなくても単に switch で分岐するので十分じゃないですか? 複雑な構文解析が必要なら Roslyn を使います。他の言語で言う eval のようなことができます。 他にも少し情報は古いですが、次のような方法があります。 https://dobon.net/vb/dotnet/programing/eval.html
BRAK

2020/12/23 02:58

このような感じの解析です。それの"<"この文字記号を文字として扱い変換する方法です。 他の文字"a"や文字数値の解析に関しては問題ないです。
BRAK

2020/12/23 03:09

delegateをDictionary に入れることもできるのですね。 このリンクの方法は読んでてかなり参考になりました。 初めから詳細に情報を書くべきでした、申し訳ございません。
BRAK

2020/12/23 03:15

ありがとうございました。
YT0014

2020/12/23 04:34

解決後で申し訳ないのですが、仰るような目的なら、インタープリタを検索のキーワードにしてみるのをお勧めします。
guest

回答1

0

自己解決

皆さんの意見を参考にコードを書き進めようと思います。
参考にする考え
https://www.peyarogu.com/entry/roslyn-csharp
https://dobon.net/vb/dotnet/programing/eval.html>

単純な構文解析するなら
Dictionaryを使う
switch文を使う

投稿2020/12/23 03:13

BRAK

総合スコア98

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問