2010-04-20 33 views
1

我有一个字符串说string s ="C:\\Data",我有一个数组,其中包含一些在开始时包含“C:\ Data”的字符串,即string[] arr = new {"C:\\Data\abc.xml","C:\\Data\Test\hello.cs"};在C#中的字符串拆分操作

我必须从每个条目中删除字符串“C:\ Data”,并且必须将它与另一个字符串结合起来,例如string fixed = "D:\\Data"

什么是最好的办法,请帮助,因为我是一个新的程序员在C#中。

+0

其中的C#版本您使用的? – 2010-04-20 14:10:09

回答

2

String.Replace也许你所需要的,因为它会在你的字符串替换所有的的C:\Data出现,而你只需要在开始

我建议如下:

string s ="C:\\Data"; 
string s1 = "D:\\Data"; 
for (int i = 0; i < arr.Count; i++) 
{ 
    if (arr[i].StartsWith(s)) 
     arr[i] = s1 + arr[i].Remove(s.Length); 
} 
+1

好点。例如,如果这是一个PATH变量,其中包含许多以分号分隔的C:\ Data路径,则Replace会替换所有这些路径。根据Indigo的需求,这可能是需要或不需要的。 – 2010-04-20 14:20:53

-1

你可以使用LINQ和做

String[] newStrings = arr.Select(oldString => fixed + oldString.Replace(s, "")) 
         .ToArray() 

注意fixed是一个变量名在C#中的关键字,因此一个不错的选择。

+0

这个例子不完整,并不完全符合@Indigo的要求。 – Keltex 2010-04-20 14:08:43

+0

@Keltex:这是怎么回事? – Jens 2010-04-20 14:09:38

5

如果你确保所有数组中的元素与“C:\数据”开始,那么它很简单:

for(int i = 0; i<arr.Length; i++) 
{ 
    arr[i] = arr[i].Replace("C:\\Data" , "D:\\Data"); 
} 
0

将与string.replace采取照顾很容易地。

0
for (var i=0; i < arr.Length; i++) 
    arr[i] = arr[i].Replace("C:\\Data", "D:\\Data"); 
1

结合LINQ和与string.replace():

arr.Select(s => s.Replace("C:\\Data", "D:\\Data").ToArray();