• ベストアンサー

文字列の後ろから必要分だけ削除したい。

例1 Dim str As String = "あいうえお1234" 文字列の中の1234だけ削除したい場合は、 str = str.Remove(5,4) という風に、5文字目の後から4文字削除にすればよいのですが、 例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、 文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。 .NET環境です。

質問者が選んだベストアンサー

  • ベストアンサー
  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

Length(str)で文字数を取得できますので、後ろから4文字目は先頭から何文字目かは計算できると思いますが、どうでしょうか?

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

http://www.wakhok.ac.jp/biblion/1996/JavaAppli/node5.html など参照。String クラスの主なメソッドのsubstring() ()内のスタート、エンドのエンドの引数が無いとき、書かなければ 残りの文字列になる。 >引数が一つの substring メソッドを用います。この場合には、開始文字から、後ろ全てが、部分文字列として指定されます。 開始文字は0から開始して数える。 全体の長さを Dim strlength As String = str.Length MsgBox(strlength) で捉え、そこから4文字引いたものをスタートポジションで指定する。      Dim strLength As String = str.Length Dim l As Integer = (strLength - 4) Dim rightStr2 As String = str.Substring(l) MsgBox(rightStr2)

noname#45614
質問者

お礼

回答くれた皆さんありがとうございます。 皆さんから頂いたアドバイスで上手く後ろの文字列を削除することができました。 またよろしくお願いします^^

回答No.6

No.5です・・ chie65536様がおっしゃっているようにSubstringなら一発ですね・・・ そんなメソッド初めて知った^^;

回答No.5

やったことありますけど、幼稚なコードかもしれません・・・ Dim string_length As Integer = TextBox1.TextLength TextBox1.Text = StrReverse(Mid(StrReverse(TextBox1.Text), 5, string_length - 4)) でだめ?

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.4

>という風に、5文字目の後から4文字削除にすればよいのですが、 「あいうえお1234」の1234の4文字を削るので、5文字目の後ろから4文字削る、と考えたと思います。 これを「1文字目から、後ろの不要な4文字の手前まで残す」と考えましょう。削るんじゃなく残すと発想を転換するのがミソ。 例えば、全体が5文字の時は「1文字目から1文字残す」です。 例えば、全体が6文字の時は「1文字目から2文字残す」です。 例えば、全体が7文字の時は「1文字目から3文字残す」です。 つまり、全体がn文字の時は「1文字目からn-4文字残す」です。 もう判りますね。「全体が何文字か」ってプロパティがあれば、残す文字数は計算出来るので str = str.Substring(1,str.Length - 4) でOKって事です。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.3

文字列操作に関しては、工夫で何とかなる部分が多いかと。。。 一度、文字列から切り出して変数格納して何かしら操作したり、特定の文字のところでぶつ切りにして配列に突っ込んだりとかよくやった記憶があります。 http://www.bcap.co.jp/hanafusa/dotnet/mojiIndex.htm 「文字列中から指定位置の文字を取り出す」 ↓ 「4.文字列中の末尾から3文字を取り出す」 あたりでどうでしょうかね。 これの場合、工夫も何も普通の関数だったりはしますが。。。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.2

str.Lengthでした。