C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: vbで半角文字列からif文で演算子を判断させたい


(過去ログ 129 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■76258 / inTopicNo.1)  vbで半角文字列からif文で演算子を判断させたい
  
□投稿者/ aluminum (1回)-(2015/06/18(Thu) 22:24:01)

分類:[.NET 全般] 

タイトルの通り、半角文字列からif文で演算子を判断させたいです。

If Mid(TextBox1.Text, i, 1) = "+" then

これだと上手くいきませんでした。
for文でテキストの中身を一文字ずつ判定し、"+"ならこのようなif文を通過させたいです。
どのようにすればよいのでしょうか?
引用返信 編集キー/
■76263 / inTopicNo.2)  Re[1]: vbで半角文字列からif文で演算子を判断させたい
□投稿者/ わくちゃん (10回)-(2015/06/19(Fri) 08:23:03)
No76258 (aluminum さん) に返信
> タイトルの通り、半角文字列からif文で演算子を判断させたいです。
> 
> If Mid(TextBox1.Text, i, 1) = "+" then
> 
> これだと上手くいきませんでした。
> for文でテキストの中身を一文字ずつ判定し、"+"ならこのようなif文を通過させたいです。
> どのようにすればよいのでしょうか?

どのように上手くいかなかったのですか?
下記コードで問題なく動作しました。

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        Dim i As Integer

        For i = 1 To TextBox1.Text.Length
            If Mid(TextBox1.Text, i, 1) = "+" Then
                MessageBox.Show("+ exists")
            End If
        Next

    End Sub

End Class

引用返信 編集キー/
■76266 / inTopicNo.3)  Re[1]: vbで半角文字列からif文で演算子を判断させたい
□投稿者/ WebSurfer (602回)-(2015/06/19(Fri) 09:39:20)
No76258 (aluminum さん) に返信

Microsoft.VisualBasic.Strings クラスを使うことに特に理由がなければ、
System.String クラスを使うようにして、そのメンバの中から利用できる
ものを探してはいかがですか?

String クラス
https://msdn.microsoft.com/ja-jp/library/system.string(v=vs.110).aspx

自分でループをまわして探すようなコードを書かなくても、Contains メ
ソッドとか IndexOf メソッドなど、今回の目的に合うものが見つかるは
ずです。

そういう方向に進んだ方が、開発工数、性能、保守性などの面で優れた
ソースができると思うのですが。

引用返信 編集キー/
■76348 / inTopicNo.4)  Re[2]: vbで半角文字列からif文で演算子を判断させたい
□投稿者/ ぴち (1回)-(2015/06/30(Tue) 18:34:16)
一文字ずつ判定しなきゃダメなんだろうか?

If TextBox1.Text Like "*[+-\*/]*" Then
引用返信 編集キー/
■76351 / inTopicNo.5)  Re[1]: vbで半角文字列からif文で演算子を判断させたい
□投稿者/ 魔界の仮面弁士 (388回)-(2015/07/01(Wed) 09:22:11)
No76258 (aluminum さん) に返信
> タイトルの通り、半角文字列からif文で演算子を判断させたいです。

何のために、その判断を行いたいのかという背景も気になりますが、
そもそも、ここでいう「演算子」の定義とは何でしょうか?


Visual Basic の演算子だとすれば、1文字とは限らず、
「2文字以上の文字列」の可能性もありますよね。
余りを求める算術演算子 "Mod" とか、不等号の比較演算子 "<>" とか。

特に、"<" と ">" と "<>" などは、それぞれ別の演算子なので注意が必要でしょう。

また、たとえば上記の "<" は、VB では演算子以外の場所でも利用される記号です。
(具体的には、XML リテラル、XML 軸プロパティ、属性指定などです)

もしも、ステートメント内の構文解析を行いたいのだとすれば、
その記号が、演算子としてではなく、他の意味で使われている可能性も
考慮せねばならないでしょう。(たとえば、文字列リテラルの中にある場合など)

仮に、Visual Basic.NET よりは構文の簡単な Visual Basic for Applications だったと
仮定しても、たとえば VBA7 構文では
 a=3^^2
という記述もありえます。この場合、2番目の "^" は算術演算子ですが、
1番目の "^" は演算子ではなく、数値リテラルの一部(型宣言文字)ですね。



> どのようにすればよいのでしょうか?
まずは、やりたいことを整理するのが先決かと思います。
特に、演算子としてどのようなものを考えているのかの定義から。

たとえば、四則演算以外の以外の演算子記号を含めるかどうかとか。
(代入演算子、比較演算子、三項演算子…etc.)

その上で、「正規表現」や「構文解析」などのキーワードで検索すると、
参考になる資料が見つかるかもしれません。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -