2017-05-03 37 views
-2

我需要一个可以拆分字符串并将一些特定信息复制到另一个文件的c#程序。从文本文件(C#)获取部分信息

我有一个文本文件是这样的:

BRIDGE.V2014R6I1.SOFT 
icem.V4R12I2.SOFT 
mygale.V4R1I1.SOFT,patch01_MAJ_APL.exe 
photoshop.V2014R10I1.SOFT 
rhino.V5R0I1.SOFT,patch01_Update_Files.exe 
TSFX.V2R3I2.SOFT,patch01_corrections.exe,patch02_clock.exe,patch03_correction_tri_date.exe,patch04_gestion_chemins_unc.exe 

,我只需要其中的一些信息到如下另一个文件:

BRIDGE,SOFT 
ICEM,SOFT 
MYGALE,SOFT 
PHOTOSHOP,SOFT 

任何帮助请:)

+0

https://regexone.com/references/csharp – RH6

回答

0

由于我不知道,阉羊您的文本文件总是这样,我只能提供一个明确的答案。首先,你必须这样做,因为ThatsEli指出,在点分割字符串:

var splitted = inputString.Split("."); 

现在好像你的第二个(从零开始的索引)项与从相关分裂逗号无关信息。因此,所有你需要做的是建立共同的零级和第二,而第二个只有逗号前面第一部分:

var res = $"{splitted[0]},{splitted[2].Split(",")[0]}"; 

但是,你似乎想你的结果在大写:

var resUpper = res.ToUpper(); 

但是实际上这只有在你有一个完美的输入文件的情况下才会起作用 - 否则你必须检查,否则它实际上有很多项目,否则你会得到一个IndexOutOfRange异常。


其实我不确定你是否知道如何读/写文件,所以我也会提供这方面的例子。

var path = @"Your\Path\To\The\Input\File"; 
if (!File.Exists(path)) 
{ 
    Console.WriteLine("File doesn't exist! If you're using a console, otherwise use another way to print error messages"); 
    return; 
} 
var inputString = File.ReadAllText(path); 

var outputPath = @"your\Output\Path"; 
if(!File.Exists(outputPath)) 
{ 
    Console.WriteLine("You know what to put here"); 
    return; 
} 
File.WriteAllText(outputPath, inputString); 
+0

非常感谢您的帮助。我试图theEli张贴的方式,它似乎是工作: '串[] splitString = line.Split(新的char [] {, ' ''。'});'' 字符串S = splitString [0] .ToUpper()+“,”+ splitString [2] .ToUpper();' '作家。WriteLine(s);' – harris93

+0

@ harris93如果这回答了您的问题,不要忘记标记答案作为答案,因为这将帮助您和更广泛的社区找出解决的问题。 – MetaColon

0

我将分割字符串,并创建一个新的文件,其中包含从分割中获得的数组的一部分。

你可以用例如分割一个字符串。 Split(".");

然后例如创建一个新的字符串stringname = splitstring[0] + "," + splitstring[2]

这会增加第一和第三部分重新走到一起。 这将适用于您的第一行。

+0

是的,但我怎么能摆脱GED所有这些 “补丁” 的在线3,5和6 – harris93

+0

您可以使用foreach进行合并,并在将其添加回来之前检查字符串是否包含修补程序:) – ThatsEli