vb.net 2022で開発してます。(初心者です)
変数の文字列を分割について教えてください。
現在inptにはa1,a2,a3,a4...a10まで入り「,」区切りでa6から改行しています。
今後inptに最大a1~a50(基本a1~a30を使用)が入るため5個区切りで10行改行するようにしたいです。
現在のままa11以上いれると下記のようになります。
a1,a2,a3,a4,a5
a6,a7,a8,a9,a10,a11,a12...a50
Function InsertEnterAfterThirdComma(ByVal input As String) As String
' 文字列をカンマで分割します。
Dim parts As String() = input.Split(New Char() {","c})
' 配列の長さが5より大きい場合、改行を挿入します。
If parts.Length > 5 Then
' 最初の3つの要素を連結します。
Dim f As String = String.Join(",", parts, 0, 5)
' 残りの要素を連結します。
Dim t As String = String.Join(",", parts, 5, parts.Length - 5)
' 最初の5つの要素、改行、残りの要素を連結して返します。
Return f & "," & Environment.NewLine & t
Else
' 配列の長さが5以下の場合、元の入力を返します。
Return input
End If
End Function
>InsertEnterAfterThirdComma
>' 最初の3つの要素を連結します。
3番目で改行する問題をコピペして5に変えちゃったんですかね。
中途半端な改変は、PG作成者の意図が読めなくなるからやめて欲しいです。
まぁ、切り出す位置を変えるだけなら算数の範囲だし、問題を言葉で整理する
国語ができれば小学6年生くらいで解決できる知識レベルと思われます。
自分で考える力を育てないと。
Function InsertEnterAfterInsertcountComma(ByVal input As String, ByVal Insertcount As Integer) As String
Dim inputReturn As String = String.Empty
Dim loopIndex As Integer = 0
Dim parts As String() = input.Split(New Char() {","c})
If Insertcount < 0 Then Throw New Exception("Error:OutOfRangeIndex(Insertcount)")
If Insertcount = 0 Then Return input
While True
loopIndex = loopIndex + Insertcount
If parts.Length > loopIndex Then
Dim f As String = String.Join(",", parts, loopIndex - Insertcount, Insertcount)
inputReturn = inputReturn & f & "," & Environment.NewLine
Else
Dim t As String = String.Join(",", parts, loopIndex - Insertcount, parts.Length - (loopIndex - Insertcount))
inputReturn = inputReturn & t
Exit While
End If
End While
Return inputReturn
End Function
ツイート | ![]() |