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

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

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

Re[2]: Mid から Substring へ置き換えでエラー


(過去ログ 111 を表示中)

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

■66007 / inTopicNo.1)  Mid から Substring へ置き換えでエラー
  
□投稿者/ ゆう子 (1回)-(2013/03/28(Thu) 16:29:55)

分類:[VB.NET/VB2005 以降] 

初めまして。
Microsoft Visual Studio Express 2012 for Windows Desktop を使っています。
以下のようにMidからSubstringに書き換えをしたところ

「Expressionは値であるため、代入式のターゲットにすることはできません」
というエラーが出るようになってしまいました。
これの解決方法が分からずに困っています。
どなたかアドバイスをお願い致します。

Public Hensu As String

Mid(Hensu, 2, 3) = "1" ←書き換え前

Hensu.Substring(1, 3) = "1"  ←書き換え後エラー

どうぞよろしくお願いします。

引用返信 編集キー/
■66012 / inTopicNo.2)  Re[1]: Mid から Substring へ置き換えでエラー
□投稿者/ 魔界の仮面弁士 (185回)-(2013/03/28(Thu) 17:50:29)
No66007 (ゆう子 さん) に返信
> Microsoft Visual Studio Express 2012 for Windows Desktop を使っています。
> 以下のようにMidからSubstringに書き換えをしたところ

「Mid 関数」を Substring メソッドに置き換えることはできますが、
「Mid ステートメント」を Substring メソッドに置き換えることはできません。

String.Remove/Insert メソッドや Substring、あるいは StringBuidler 等を
組み合わせて利用しないことにば、Mid ステートメントと同等の機能にはならないかと。

無理に別のコードに置き換えようとせずとも、そのまま Mid を使い続けておけば
良いのでは無いでしょうか。無理に車輪の再発明をしようとすれば、検証不足で
別のバグを作りこんでしまう可能性も増えてしまいますし。


# これが Microsoft.VisualBasic.Compatibility.VB6 名前空間の物であれば
# 新規プロジェクトでは使わない方が良いとされていますが、「Mid」は
# Microsoft.VisualBasic.Strings に含まれている物ですし。
引用返信 編集キー/
■66021 / inTopicNo.3)  Re[2]: Mid から Substring へ置き換えでエラー
□投稿者/ pang2 (16回)-(2013/03/28(Thu) 18:30:03)
VBのMIDを使いたくないのであれば、.NETに一発で出来るメソッドはないので自作することになります。

http://ap.atmarkit.co.jp/bbs/core/fdotnet/28935

> # これが Microsoft.VisualBasic.Compatibility.VB6 名前空間の物であれば
> # 新規プロジェクトでは使わない方が良いとされていますが、「Mid」は
> # Microsoft.VisualBasic.Strings に含まれている物ですし。

「Midステートメント」は、コンパイルすると

Microsoft.VisualBasic.CompilerServices.StringType.MidStmtStr メソッドに置き換わります。

ちなみに、C# からも利用できます

Microsoft.VisualBasic.CompilerServices.StringType.MidStmtStr(ref Hensuu, 2, 1, "1");
引用返信 編集キー/
■66046 / inTopicNo.4)  Re[1]: Mid から Substring へ置き換えでエラー
□投稿者/ shu (251回)-(2013/03/29(Fri) 08:21:40)
No66007 (ゆう子 さん) に返信
> 初めまして。
> Microsoft Visual Studio Express 2012 for Windows Desktop を使っています。
> 以下のようにMidからSubstringに書き換えをしたところ
>
> 「Expressionは値であるため、代入式のターゲットにすることはできません」
> というエラーが出るようになってしまいました。
> これの解決方法が分からずに困っています。
> どなたかアドバイスをお願い致します。
>
> Public Hensu As String
>
> Mid(Hensu, 2, 3) = "1" ←書き換え前
>
> Hensu.Substring(1, 3) = "1"  ←書き換え後エラー
VisualBasic名前空間を出来るだけ使わない私としては
魔界の仮面弁士さんがちょっと出したRemove,Insertを使って
Hensu = Hensu.Remove(1,3).Insert(1,"1")
とするのが良いかなと思います。
ただ魔界の仮面弁士さんが言っているように動作しているものを
別の書き方をするにはそれなりのテストが必要となりますので注意して下さい。

Mid文について便利なんだけど知らない人がみると分かりにくいかなという気がします。
Stringのプロパティで実装されていればまだわかりやすいと思うのですが。
例えば Hensu.Mid(2,3) = "1" みたいな書き方が出来るよう実装されればと思う。

この例ですが長さ3の文字列を長さ1の文字列に変換していますが大丈夫なのでしょうか?
テキストボックスの選択箇所を置き換えるとかの場合なら良いかもしれませんね。
引用返信 編集キー/
■66048 / inTopicNo.5)  Re[2]: Mid から Substring へ置き換えでエラー
□投稿者/ ゆう子 (2回)-(2013/03/29(Fri) 09:21:32)
そもそもの発端は古いバージョンで作成したソフトを
新しく移植することになって、Mid関数を使っている場合
正しい値を返さないということで、Substringに置き換える必要が
あったわけです。

shuさんの方法でなんとかできるようです。

みなさんいろいろなアドバイスありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -