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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87715 の関連記事表示

<< 0 >>
■87715  配列の指定箇所だけを,新しい配列に入れる
□投稿者/ opp -(2018/06/22(Fri) 18:27:48)

    分類:[.NET 全般] 

    初めまして、Vb.netで開発を始めて
    間もないです


    ご質問いたします

    a,b,c
    a,b,c,c
    a,b,c,c,c

    Stringの配列があります

    a,bまでは要らなくて
    ,c
    ,c,c
    ,c,c,c

    カンマからcの所全部を
    新しい配列に取得したいのですが

    どうやるのかさっぱりわかりません
    よろしくお願い致します。
親記事 /過去ログ151より / 関連記事表示
削除チェック/

■87716  Re[1]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ WebSurfer -(2018/06/22(Fri) 18:50:43)
    No87715 (opp さん) に返信

    > どうやるのかさっぱりわかりません

    自分も質問の内容から質問者さんが何をしたいのかさっぱり分かりません。

    単純に最初が a, b となっていたらそれを取り除けばいいのか、中身の文字列は不定でとにかく
    配列の中の最初の 2 つが不要なのか、数は不定で要素の中身で不要なものを判断して取り除く
    のか・・・

    丸投げしないで調べまくってコードを書く努力をしてください。それをアップしてもらうと詳し
    く説明しなくても回答者・閲覧者に分かってもらえるかもしれません。
記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87717  Re[2]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ opp -(2018/06/22(Fri) 19:26:52)
    No87716 (WebSurfer さん) に返信
    > ■No87715 (opp さん) に返信
    >

    やったことを載せるまで考えてませんでした
    ご指導ありがとうございます

    自分が試みたのは

    a,bの部分を削除を試みました

    For i As Integer = 0 To load_file.Length - 1
    Dim tmp As String = load_file(i).Split(","c)(2)
    Log(i) = tmp
    Next

    とやってみましたが これではできません

    For i As Integer = 0 To load_file.Length - 1
    Dim tmp As String = load_file(i).substring(0,5)
    Log(i) = tmp
    Next

    aは0,4で要らないですが、bの文字列が必ずしも1文字じゃないので、指定はできません
    removeも試しましたがだめでした

記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87718  Re[3]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ 名無し -(2018/06/22(Fri) 22:03:47)
    No87717 (opp さん) に返信
    
    Sub Main()
        Dim lines = {
            "a,b,c",
            "a,b,c,c",
            "a,b,c,c,c"
            }
    
        For Each line In lines
            Dim values = line.Split(","c).SkipWhile(Function(i) {"a", "b"}.Contains(i))
            Diagnostics.Debug.WriteLine(String.Join(",", values))
        Next
    End Sub
    
    こういうこと?
記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87719  Re[3]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ Jitta -(2018/06/23(Sat) 19:15:25)
    なんか、本当に必要な事が書けてる?
    カンマ区切りの3列目以降だけ要る、なんじゃないの?
    split して2からcount まで取り出せばいいよね。
記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87721  Re[4]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ Opp -(2018/06/25(Mon) 10:03:34)
    No87719 (Jitta さん) に返信
    > なんか、本当に必要な事が書けてる?
    > カンマ区切りの3列目以降だけ要る、なんじゃないの?
    > split して2からcount まで取り出せばいいよね。

    ご返信ありがとうございます

    Jiitaさんの言うとおり
    それがしたいですね・・


    For i As Integer = 0 To load_file.Length - 1
    Dim tmp As String = load_file(i).Split(","c)(2,load_files.Length-1)
    Log(i) = tmp
    Next

    のように第二引数とかでしょうか
    ただ、c部分は全ての行に無い場合もあるので
    Index境界外の処理も
    Tryなりで入れなければいけないのか??
    それか違う処理の仕方が

    初心者には頭が痛いです。。
記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87722  Re[5]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ 774RR -(2018/06/25(Mon) 11:57:55)
    コードをいきなり書く前に仕様整理するのが大事。

    仕様0.カンマ記号を区切りとして、「項目」を分ける
    仕様1.項目3つ目以後がもしあれば、3つ目以後を取り出す
    ab,bc,cd,de → cd,de
    xxx,yyy,zzz → zzz
    まではここまでの話でとりあえず合意があるわけだけど

    仕様2.項目2つ以下の場合どうする?については質問者が決めなきゃ。
    ・その行は抽出しない→入力10行に対して出力3行とかを容認する
    ・空行を抽出する(入出力で行数が同じでないといけない場合の話)
    ・「デフォルト出力」を返す
    ・不正入力なので例外を上位に投げる
    ・その他
    どれがお望み? それを決めた後だよ、実コード書くのは。
記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87723  Re[6]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ Opp -(2018/06/25(Mon) 12:15:12)
    No87722 (774RR さん) に返信

    詳しくありがとうございます

    ab,bc,cd,de → cd,de
    xxx,yyy,zzz → zzz

    のように 2以降だけ取得したいので
    ・その行は抽出しない→入力10行に対して出力3行とかを容認する です
    無い場合は、何も無いという風にしたいので(後々入ってくるので・・)






記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87733  Re[7]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ Jitta -(2018/06/25(Mon) 18:57:48)
    No87723 (Opp さん) に返信

    なんかやってる事が No87708 に似てるんだけど、
    あっちの下の方に書いた事だけど、
    いっぺんに全部しようとするのではなく、
    一つ一つ確実にこなしましょう。

    > For i As Integer = 0 To load_file.Length - 1
    > Dim tmp As String = load_file(i).Split(","c)(2,load_files.Length-1)

    Pythonの経験がおありですか?
    Pythonではリストなどで[1:4]とすると1から4ですが、
    VBには該当するものはなかったはず。
    きちんとFor文で回して下さい。

    それと、load_file.Lengthは、行数ですよね。
    ここでは、カンマで分割してできた配列の要素2以降ですよ。
記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87736  Re[7]: 配列の指定箇所だけを,新しい配列に入れる
□投稿者/ shu -(2018/06/26(Tue) 09:01:09)
    No87723 (Opp さん) に返信
    > ■No87722 (774RR さん) に返信
    > 
    > 詳しくありがとうございます
    > 
    > ab,bc,cd,de → cd,de
    > xxx,yyy,zzz → zzz
    > 
    > のように 2以降だけ取得したいので
    > ・その行は抽出しない→入力10行に対して出力3行とかを容認する です
    > 無い場合は、何も無いという風にしたいので(後々入ってくるので・・)
    > 
    
            Dim sample = {"a,b,c",
                          "a,b,c,c",
                          "a",
                          "x,y,c",
                          "z,b,d"}
    
            Dim result = (From line In sample
                          Select values = line.Split(","c)
                          Where values.Length > 2
                          Select values.Skip(2).ToArray).ToArray
    
    こんな感じの処理でしょうか?
    
記事No.87715 のレス /過去ログ151より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -