• ベストアンサー
  • 困ってます

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

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

noname#45614

共感・応援の気持ちを伝えよう!

  • 回答数7
  • 閲覧数4705
  • ありがとう数2

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

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

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • VB6.0 文字列のファイル書き込み

    こんにちは。 VB6.0を研修中の新人です。 テキストファイルにランダムアクセスをし半角全角混じりの文字列を書き込むコードを考えています。 連休中は会社に入れないので自宅でコードをどのように書くかある程度決めておきたいです。 ■ あいうえお ■ カキクケコ ■ サシスセソ   (サシスセソは半角です)   ■ タチツテトはひ (タチツテトは半角です) メモ帳.txtに文字列を書き込むと上記のように書き込まれます。 これは見た目が悪いので下記のように"■ "がないように書き込むことは無理でしょうか。 あいうえお カキクケコ サシスセソ    (サシスセソは半角です) タチツテトはひ  (タチツテトは半角です) いま書いたコードは下記のとおりです。 Public Sub Main() WriteFile End Sub '書き込む関数 Public Sub WriteFile()   Dim i As Integer   Dim str As String   Open "C:\メモ帳.txt" For Random As #1 Len = 14   Do While < 5     Select Case i       Case 1 str="あいうえお"       Case 2 str="カキクケコ"       Case 3 str="サシスセソ"       (サシスセソは半角です)       Case 4 str="タチツテトはひふへほ" (タチツテトは半角です)     End Select     strNagasa(str,10) + vbCrlf     Put #1,i,str     i = i + 1   Loop   Close #1 End Sub '文字列をレコードの長さに合わせる関数(いまの場合は10バイト) 'Nagasaが"10"の場合 'strが "サシスセソ" なら "サシスセソ" に半角スペースを5個詰めて返す。 'strが "タチツテトはひふへほ" なら "タチツテトはひ" の9バイトで文字列を切って半角スペースを1個詰めて返す。 Public Function StrNagasa(str As String,Nagasa As Integer) As String   ...   省略(完成済み)   ... End Function

  • 文字列に\nを入れたい

    データベースAccessからデータを取得しTextFieldにその取得したデータを表示させたのですが、文字数が長くてTextFieldに収まらなくなっしてしまいました。そこで取得した文字列に新たに\nを入れて改行させようとしています。 String str = "文字列40字以上…" if(str.length >= 40){ ***処理内容*** 文字列が40字以上なら40文字目のすぐ後ろに\nを足して改行させて表示させたい。 ただし、40文字目を区切りとして改行させ表示させる。例)96文字なら3行に表示させるようにする。 } このような処理を行いたいのですが、良い方法がわかりません。アドバイスをお願いします。

  • 文字数を越えた文字列を削除するには?

    いつもお世話になっております。また行き詰ってしまいました。 ご助言頂きたくお願い致します。 A列とB列にデータが入っていて、B列には2つのパターンの文字が入っています。 一つは、前の10文字が必ず半角(英字+9ケタの数字)その後は全角のスペースの後に 全角の文字が並びます。(全角の文字数は不規則) 例1:A123456789 あいうえおかきくけこさしすせそ もう一つは頭からすべて全角文字 例2:あいうえおかきくけこさしすせそたちつてと 問題になっている部分は、このB列に入っているデータを頭から 全角15文字以内、半角なら30文字以内に収める という所です。 例1だと、 A123456789 あいうえおかきくけこさしすせそ →A123456789 あいうえおかきくけ(半角10文字+全角10文字) 例2だと あいうえおかきくけこさしすせそたちつてと →あいうえおかきくけこさしすせそ(全角15文字) 下記のようなマクロを作ってみたのですが2つのパターンに対応する為にはどうすればよいでしょうか? Const col1 As String = "B" Dim idx1 As Long Dim myStr1 As String With ActiveSheet For idx1 = .Cells(65536, col1).End(xlUp).Row To 1 Step -1 myStr1 = Cells(idx1, "B") If .Cells(idx1, "B").Value = "" Then Else Cells(idx1, "B") = Left(myStr1, 15) End If Next idx1 End With 以上、宜しくお願い致します。 環境:windowsXP Excel2003

その他の回答 (6)

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

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)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答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)) でだめ?

共感・感謝の気持ちを伝えよう!

  • 回答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って事です。

共感・感謝の気持ちを伝えよう!

  • 回答No.3

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

共感・感謝の気持ちを伝えよう!

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

str.Lengthでした。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 文字列を削除したい。

    Stringの文字列をStringに移し特定の 文字を消したいと思っています。 調べたところdeleteというメソッドで。 開始位置と終了位置を指定すれば 削除できるみたいですが、 文字列を指定してその文字列を削除する、 という事はできますか? お願いします。

    • ベストアンサー
    • Java
  • 文字列の取り出し方

    今、Visual Basic 2008を使用しています。 textbox2とtextbox3があり、textbox2に複数行にまたがる文字列があります。 この文字列の中で、listbox1の中にある項目の文字列が入ってる場合はカンマ区切りで文字列の後ろにつなげたいのですが、うまくいきません。 具体的には あいうえお あかさたな いろはにほ というtextbox2の内容について、listbox1内に あ い という2つの項目があった場合、 あいうえお,あ,い あかさたな,あ いろはにほ,い という結果をtextbox3に書き出すという内容です。 Dim addtag As String = "" Dim i As Integer For Each part As String In TextBox2.Text.Split(vbCrLf) If part <> "" Then For i = ListBox1.Items.Count - 1 To 0 Step -1 If part.Contains(ListBox1.Items(i)) = True Then addtag = addtag & "," & ListBox1.Items(i) End If Next part = part & addtag TextBox3.Text = TextBox3.Text & part & ControlChars.NewLine part = "" addtag = "" End If Next というプログラムを組んでいますが、どこが間違っているのかわからず、煮詰まってしまいました。 プログラムは初心者で、根本から違っていたら恥ずかしい限りですが、どうかよろしくお願いします。

  • VBA 文字列の抜き出し

    VBAで文字列の抜き出しの方法を教えてください。 同様な質問があり、参考にしてみたのですがうまくいきません。 お分かりの方がいましたらご享受お願いいたします。 30~45字からなる文字列があります。 その中に特定の文字列が2つあり、そのうちの最初の特定文字列に続く文字2つ目の特定文字列前までを抜き出したいのですがうまくいきません。 具体的には abcdefghi GN=12jikl PE=fghj456 という文字列のなかから"GN="と"PE="の中間の文字を取り出したいのですが、 自分で書いたものでは"PE="以上が抜き出され、"GN="より前の文字列を抜き出せませんでした。 GN=......, PE=......の文字数はそれぞれ不規則です。また、GN=...よりも前の文字数も不規則です。 以下が作成したものです。 Dim i As Integer Dim Srch As String Dim Btwn As String Const Chr1 As String = "GN " Const Chr2 As String = "PE" Dim m As String Set sheetobj = ThisWorkbook.Worksheets("A") With sheeobj lastrow = sheetobj.Cells(sheetobj.Rows.Count, 10).End(xlUp).Row For i = 2 To lastrow Srch = sheetobj.Cells(i, 10) Btwn = Mid(Srch, InStr(Srch, Chr1) + 1, InStr(Srch, Chr2) - InStr(Srch, Chr1) - 1) sheetobj.Cells(i, 9) = Btwn Next i End With End Sub なにかいい方法があれば教えて頂けたらと思います。 よろしくお願い致します。

  • 文字列の操作について教えて下さい。

    Javaで文字列の操作をしたいと考えています。 String str1 = "あいうえおかきく"; String str2 = "あいうえお"; 上記のようなstr1、str2という文字列があるとします。 str1は、str2と同様の文字列を先頭から含んでいます。 str2と同じ文字を省き、それ以降の文字列を取り出して、 String str3 = "かきく"; という文字列を取り出す処理を行いたい、と考えています。 一般的には、どのようなロジックを組むのかと思い質問させて頂きました。 みなさんなら、どのようなプログラムか教えてください。 よろしくお願い致します。m(_ _)m

  • 文字列を変数名として扱う方法

    vb6.0 か vb.net で文字列を変数名として扱うにはどうすればいいでしょうか? 例をあげると下記のようなことです。 -------------------- dim abc as string dim x as string abc = "テスト" x = "b" msgbox "a" & x & "c" -------------------- これをそのままvb6.0で実行すると"abc"という文字が表示されますが "abc"ではなく"テスト"と表示させたいのです。 つまり msgbox abc とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。

  • VB2010 TextBoxの文字列に正しく入力されないのは何故ですか

    VB2010 TextBoxの文字列に正しく入力されないのは何故ですか? string型の変数に文字列を入れ、TextBox.Textに代入すると文字列の後ろが切れてしまう。 Dim st As String st="s01114DG000555<0?e09" TextBox.Text = st この場合、TextBox.Textには"s01114DG000555<0"となり、後ろの4文字が切れてしまっている。 ちなみに、 TextBox.Text = "s01114DG000555<0?e09" とすると、正常に全文字数が入る。 半角文字列の塊なのに、どうしてこのようなことが起きるのでしょうか? また、これの対応策は何ですか? 以上、よろしくお願いします。

  • .Netでの、文字列の中の「

    VB.Netで、下記文字列をテキストファイルに追記してるのですが、「印刷」の文字が化けてしまいます。 日本語を送る場合には、何か記述方法がことなるのでしょうか? (日本語がなければ、うまくいくのですが・・・) ご存知の方がいらっしゃいましたら、ご教授下さい。 宜しくお願いします。 送りたい文字列:  status = "印刷 : Alt+P" 現在の記述:  Dim wka As String  wka = "status = '印刷 : Alt+P';"

  • VB6で配列を文字列に変換する方法?

    VisualBasic6を使っております。 Dim ary() As Byte Dim s as String 配列を文字列に変換したり、文字列を配列にしたいのですが どのようにすれば良いのでしょうか?

  • vb.netに関する質問です。文字列の置き換え方法

    文字列の中のある文字だけを置き換える方法を教えてください。 文字列の長さ:任意 例:「*」を「-」に変換」 文字列: ”abc*bdg1*あいうえお”----> ”abc-bdg1-あいうえお" 文字列: ”あい*うえお*12*a"-----> ”あい-うえお-12-a" 以上。 宜しくお願いいたします。

  • エクセルで時間セルをVBで文字列として取り込むには

    エクセルです。 時間セルがあって、エクセル上での表示では 12:30:15 という風に表示するようにセルの書式設定でしているのですが、そのセルを VBで取り出そうとして、 A = Cells( 1,1 ) とかってすると、Aには、0.66656 とかって数字が入ってきてしまいます。 Aは文字列として、DIM A as String とかってしているのですけどね これをちゃんとAに、12:30:15 という形の文字列として入れるのにはどうしたらいいのでしょか