我正在研究c#中的小应用程序。我必须阅读文本文件并更新具体数字(+1)。任何人都可以帮助我
序列号'主要版本号'。'次要版本号'。'服务包编号' (将次要版本号更新为仅+1,从Sr号更新第二位数)
如果如何处理串行线路的定位问题,有时它包含:SerialNo:
,有时Sr No
文本文件信息如下
Product Code: Prd1001
Description: Item 1
SerialNo : 1.0.0
Mfg Date: 12/Jan/2017
更新后
Product Code: Prd1001
Description: Item 1
SerialNo : 1.1.0
Mfg Date: 12/Jan/2017
或
Product Code: Prd1001
Description: Item 1
Sr No 1.1.1
Mfg Date: 12/Jan/2017
更新后
Product Code: Prd1001
Description: Item 1
Sr No 1.2.1
Mfg Date: 12/Jan/2017
任何人都可以帮助我
由于
答案 0 :(得分:0)
有关如何更新第一种文件格式的示例代码:
var text = "Product Code: Prd1001\r\nDescription: Item 1\r\nSerialNo : 1.0.0\r\nMfg Date: 12/Jan/2017";
var updatedText = "";
foreach(var line in text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None))
{
if(line.StartsWith("SerialNo"))
{
var parts = line.Split(new char[] { ':' });
var serial = parts[1].Trim().Split(new char[] { '.' });
var majorVersionNo = int.Parse(serial[0]);
var minorVersionNo = int.Parse(serial[1]);
var servicePackNo = int.Parse(serial[2]);
// Make updates. Example:
servicePackNo++;
updatedText += "SerialNo : " + majorVersionNo + "." + minorVersionNo + "." + servicePackNo + Environment.NewLine;
}
else
{
updatedText += line + Environment.NewLine;
}
}
Debug.Write(updatedText);
答案 1 :(得分:0)
我建议使用ChangeVersion("c:\test.txt", 1)
,以便您处理要增加的版本索引类型。
您可以轻松调用此方法来更改次要版本,例如:
IndexOfAny
我决定使用一种简单的方法来读取每一行并检查它是否包含您的串行操作符然后它会分解您的行以根据所选设置隔离版本和增量。
要找到我使用CharArray
版本的第一个版本,然后找到Regex
个数字,因为它比使用'Version Index = 0 increment Major Version
'Version Index = 1 increment Minor Version
'Version Index = 2 increment Service Pack Version
Public Sub ChangeVersion(ByVal FilePath As String, ByVal VersionIndex As Integer)
Dim lines() As String = IO.File.ReadAllLines(FilePath)
For i = 0 To lines.Count - 1
Dim line As String = lines(i)
If line.Contains("Sr No") Or line.Contains("SerialNo") Then
Dim ix As Integer = line.IndexOfAny("1234567890".ToCharArray)
Dim early As String = line.Substring(0, ix)
Dim sversions() As String = Split(line.Remove(0, ix), ".")
If VersionIndex = 0 Then
sversions(0) = CInt(sversions(0)) + 1
ElseIf VersionIndex = 1 Then
sversions(1) = CInt(sversions(1)) + 1
ElseIf VersionIndex = 2 Then
sversions(2) = CInt(sversions(2)) + 1
Else
MsgBox("Version Index Error")
End If
Dim NewVersion As New Version(sversions(0), sversions(1), sversions(2))
lines(i) = early & NewVersion.ToString
End If
Next
IO.File.WriteAllLines(FilePath, lines)
End Sub
更快,内存消耗更少。
这是功能:
@echo off
echo "Salesman Code","Salesman Name","Description","Manager Code","Region","Reg SM#","Reg SM Long" > CO_REPNEW.CSV
type CO_REP.CSV >> CO_REPNEW.CSV
del CO_REP.CSV
ren CO_REPNEW.CSV CO_REP.CSV