.net 替换文本文件中字符串中的DB参数

.net 替换文本文件中字符串中的DB参数,.net,vb.net,.net,Vb.net,我正在编写一个代码,从文本文件中读取字符串,然后将DBnames参数(för由星号包围)更改为另一个名称,该名称以NEWDB+textBox.text开头。我还想将DOMAINDB更改为DOMAIN+txtbox.Text 我的当前代码仅使用string.StartsWith搜索特定单词。 但我正在寻找一种方法,可以读取需要根据逗号分隔进行更改的值 下面是我当前的脏代码:(它在某种程度上是有效的,但我正在寻找一种使它更具动态性的方法) 文本文件中的实际行: SSA,SystemA,,YES,YE

我正在编写一个代码,从文本文件中读取字符串,然后将
DBnames
参数(för由星号包围)更改为另一个名称,该名称以
NEWDB+textBox.text
开头。我还想将
DOMAINDB
更改为
DOMAIN+txtbox.Text

我的当前代码仅使用
string.StartsWith
搜索特定单词。 但我正在寻找一种方法,可以读取需要根据逗号分隔进行更改的值

下面是我当前的脏代码:(它在某种程度上是有效的,但我正在寻找一种使它更具动态性的方法)

文本文件中的实际行:

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

试着这样做:

Dim databases As New List(Of String)()
Dim words() As String
Dim txtLines() As String = File.ReadAllLines(sFilePath)

For Each sLine As String In txtLines
    words = sLine.Split(","c)
    words(6) = NEWDB + textBox.Text
    sLine = String.Join(",", words)
Next

File.WriteAllLines(sFilePath, txtLines)

如果我正确理解您的问题,您需要将第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个元素)


不清楚输入文本中是否有星号。

数据库是否总是
arr[6]
?如果是的话。。。您可以检查一下
arr[6]
的值吗?这是csv文件格式吗?如果是这样的话,我建议:它可以很容易地读/写CSV,你最好的选择是访问“datadb”列…Marc,是的,数据库总是在Array6上。Christian,是某种方式,是的,它是CSV。我会检查你的链接,我刚开始用VB编写代码,带你建议的代码示例将非常棒!谢谢Hanks Steve,我试着整合代码,但是出现了错误。你的一些台词已经被注释掉了,因为我没法用了。我编辑并解释了一些我的原创文章。希望它有意义。你收到错误信息了吗?或者它不是你想要的?请添加程序预期输出的示例Hi Steve,这是我想要的场景。如果textbox='AX111'SSA,SystemA,,YES,YES,*SERVERNAME,NEWDBAX111,Admin,Passw0rd!,,,MS-SQL SSB,SystemB,,否,是,*SERVERNAME,DOMAINDBAX111,Admin,Passw0rd!,,,MS-SQL SSC,SystemC,,是,是,*SERVERNAME,DOMAINDBAX111,Admin,Passw0rd!,,,MS SQLSysDragon,谢谢,但当我尝试这种方法时,我的整个代码爆炸了。我已经编辑了我的原创文章,希望它更有意义。
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())