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

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

ただいまの
回答率

90.48%

  • VB.NET

    944questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • VB

    310questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB:文字列の空白(半角スペース)を削除するプロパティの作成と使い方

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 6,016

_LAGRANGE_

score 36

イメージ説明文字列の空白を削除するプログラムをしています(たとえばA B   C D→ABCD)。
考え方としては一度バイトごとに配列に格納し、配列内の空白をReplaceプロパティを使って削除し、
処理後の配列を文字列に再度なおすという方法で進めています。

プロパティのソースは

 Private _Replace As Byte()
    Dim p2 As String = " "
    Dim p3 As String = ""

    Private Property Replace(source As Byte(), p2 As String, p3 As String) As Byte()
        Get
            Return _Replace
        End Get
        Set(value As Byte())
            _Replace = value
        End Set
    End Property

です。

Public Class Form1

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click

        End If
    End Sub
End Class

の中のどこでプロパティをどのように呼び出す?のかが分かりません。

cの関数みたいに名前だけでいいのでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

こんにちは。

String.Replaceメソッドで済みます。

Sub Main()
    Dim before = "A B   C D"
    Dim after = before.Replace(Space(1), String.Empty)
    Console.WriteLine(after)
    Console.Read()
End Sub

プロパティや配列を使う理由がよくわからないので、
これで要件が満たされないのであれば情報を補足してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/06 16:29

    デザイナーのほうで入力した数値(アルファベット)の空白を削除するという情報が抜けておりました。
    なので
    Dim before = "文字列"
    のような書き方ができないため、文字ごとに区切って配列に格納するというやり方をとりました。

    キャンセル

  • 2016/04/06 16:32

    >デザイナーのほうで入力した数値(アルファベット)の空白を削除するという情報が抜けておりました。

    意味がわからないです、もう少し詳細にお願いします。

    キャンセル

  • 2016/04/06 16:33

    textbox2.text = textbox1.text.Replace(Space(1), String.Empty)で良いのでは。

    キャンセル

  • 2016/04/06 16:38

    >意味がわからないです、もう少し詳細にお願いします

    圧縮前という窓にA BC Dなどを打ち込んで開始を押すと圧縮後という窓に空白を除いた結果が表示されるようにしたいという意味です。

    配列を使えという課題でしたが、このやり方を参考にちょっとやってみます。

    キャンセル

0

Tak1waさんの回答に対する質問者コメントより:

デザイナーのほうで入力した数値(アルファベット)の空白を

言ってる意味がよくわからんのですが、要は

・Formにテキスト入力欄がある
・上のテキスト入力欄の入力内容を取得したい
・取得する内容には空白が入ってるかも
・空白は削除したい

ってことですかね?

Public Class Form1
    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
        Dim txt As String
        txt = TextBox1.Text()
        MsgBox txt
    End Sub 
End Class


入力欄(TextBoxオブジェクト)の名前を「TextBox1」としているとすれば、これで入力内容が文字列として取得できます。

あとはTakiwaさんが紹介しているReplace関数で空白文字を除去すれば終了です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/06 16:43

    その通りです。
    配列を使えという指示のある課題でしたがあまり実用的ではないのでこちらのやり方で出してみます。
    ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    VBA データクラスのようなものを作りたい

    現在VBAを使用してマクロを作成しています。 そこで、数値の変わらない変数を宣言するだけのクラス(モジュール?)を作成したいのですがうまくいきません。 良い方法などございましたらご

  • 解決済

    VB.net の配列の宣言方法の違いについて

    質問 VB.netでは配列の宣言方法が複数あり、宣言方法によってエラーが発生します。 宣言方法によって内部の処理に違いがあるのでしょうか? 質問1.4種類の宣言方法の違い

  • 受付中

    親フォームの変数へ値をセットする方法

    親フォームにユーザコントロールがあります。 このユーザコントロールが取得した値を親フォームへ渡すには どのような処理が1番いいのでしょうか? ちなみにこのユーザコントロールは

  • 解決済

    メール AppendLineの追加について

    vb.netからメール送信をしています。 メール本文のほうで以下のように他のフォームからMailStrを拾ってきています。 Public Class MailSend

  • 解決済

    VB.NETでのマウスのグローバルフックの方法

    いつもお世話になっております。 VB.NETでグローバルフックができない事は把握をしているのですが、グローバルフックのような手段を用いたいのでご協力いただけないでしょうか。

  • 解決済

    vbaでのオブジェクト指向について

    エクセルのvbaで1つのCSVデータを基に、「営業所別」「営業別」、「得意先別」,etc の帳票を出力する処理を組もうかと考えています。 この案件にあたり、今までのmoduleのみ

  • 解決済

    VBAテキストテンプレートを読み込み、変数を代入し、テキスト出力するマクロを作成したい

    前提・実現したいこと ・SQLの記載されたテキストテンプレート ※変数部分を{XXX}みたいにし記載している ・設定シート ※テーブル名、カラム名、固定値が記載されている ①S

  • 解決済

    [VB.NET]変数名に()をつける意味

    お世話になります。 他人の作ったソース内で、以下の記述がありますが、意図がわかりません。 Property hoge() As String 変数名に()をつけても、配列に

同じタグがついた質問を見る

  • VB.NET

    944questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • VB

    310questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。