-1

テキスト ファイルから文字列を読み取り、DBnamesパラメーター (アスタリスクで囲まれたもの) を . で始まる別の名前に変更するコードを作成していますNEWDB + textBox.Text。私もに変更しDOMAINDBたいDOMAIN + txtbox.Text

私の現在のコードは、を使用して特定の単語のみを検索しstring.StartsWithます。しかし、コンマ区切りに基づいて変更する必要がある値を読み取る方法を探しています。

ここに私の現在のダーティコードがあります:(多少は機能しますが、より動的にする方法を探しています)

CurrentFilePath = NextFilePath(FilePaths, FileEnum) 'defined in previous section
OriginalFileLines = File.ReadAllLines(CurrentFilePath) 'defined in previous section
NewFileLines.Clear()
Dim DataDB = "NEWDB" + txtbox.Text.ToUpper()
Dim DomainDB = "DOMAIN" + txtbox.Text.ToUpper()
Dim sb = New StringBuilder()
For Each line In OriginalFileLines
    Dim arr = line.Split(",")
    Dim NewLine As New StringBuilder()
'    arr(6) = DataDB
'    sb.AppendLine(String.Join(",", arr))
'Next

For Each word In arr
    If word.StartsWith("DATADB") Then
       NewLine.Append(",NEWDB" + txtOrgID.Text.ToUpper) 'Change "DATADB%" to "NEWDATADB{txtbox.txt}"

    ElseIf word.Contains("*") Then
          NewLine.Append(",*" + txtServerName.Text) 'Change "%*%" to "*{ServerName}"

    Else
          NewLine.Append(IIf(Array.IndexOf(arr, word) > 0, ",", "") + word) 'Comma if not first word
    End If
Next
NewFileLines.Add(NewLine.ToString)
File.WriteAllLines(CurrentFilePath, NewFileLines.ToArray)

TextFile 内の実際の行:

SSA,SystemA,,YES,YES,*SERVERNAME,**DATADB**,Admin,Passw0rd!,,,MS-SQL
SSB,SystemB,,NO,YES,*SERVERNAME,**DOMAINDB**,Admin,Passw0rd!,,,MS-SQL
SSC,SystemC,,YES,YES,*SERVERNAME,**DOMAINDB**,Admin,Passw0rd!,,,MS-SQL
4

2 に答える 2

0

私があなたの質問を正しく理解している場合は、6 列目 (ゼロから始まる) の行の内容を新しい値に置き換える必要があります。この場合、このインデックスに直接アクセスし、そこに新しい値を書き込んでから、新しいテキストを復元できる stringbuilder に追加できます。

Dim sb = new StringBuilder()
For Each line In OriginalFileLines
    Dim arr = line.Split(",")
    if arr(6).StartsWith("**DATADB") then
         arr(6) = "NEWDB" & txtNewDbName.Text.ToUpper()

    Else if(arr(6).StartsWith("**DOMAINDB")) then
         arr(6) = arr(6).Substring(2,8) & txtNewDbName.Text.ToUpper()

    End if
    sb.AppendLine(string.Join(",", arr))
Next

Console.WriteLine(sb.ToString())

OriginalFileLines は、各文字列が CSV ファイルの行である文字列の配列であると思います。また、ここではエラーチェックはありません。コンマ分割後の行には、少なくとも 7 列が必要です (インデックス 6 は 7 番目の要素です)。

入力テキストにアスタリスクがあるかどうかは不明です。

于 2013-05-14T08:01:49.480 に答える