.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())