2010-04-20 8 views
1

J'ai une chaîne disons string s ="C:\\Data", j'ai un tableau qui contient certaines chaînes contenant "C: \ Data" au début, c'est-à-dire string[] arr = new {"C:\\Data\abc.xml","C:\\Data\Test\hello.cs"};.Opérations de division de chaîne en C#

Je dois supprimer la chaîne "C: \ Data" de chaque entrée et la combiner avec une autre chaîne, par exemple string fixed = "D:\\Data".

Quelle est la meilleure façon de le faire, s'il vous plaît aider car je suis un nouveau programmeur en C#.

+0

Quelle version de C# utilisez-vous? –

Répondre

2

String.Replace est peut-être pas ce dont vous avez besoin, car il remplacerait tous les occurrences de C:\Data dans votre chaîne, alors que vous besoin seulement que au début.

je suggère ce qui suit:

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

Bon point. Par exemple, s'il s'agit d'une variable PATH contenant de nombreuses occurences de chemins C: \ Data séparés par des points-virgules, Replace les remplace tous. Cela pourrait être souhaitable ou non, selon les besoins d'Indigo. –

-1

Vous pouvez utiliser LINQ et faire

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

Notez que fixed est un mot-clé dans C# et donc un mauvais choix pour un nom de variable.

+0

Cet exemple est incomplet ne fait pas tout à fait ce que demande @Indigo. – Keltex

+0

@Keltex: Comment ça? – Jens

5

Si vous êtes sûr que tous les éléments de votre tableau commencent par « C: \ Data », il est assez simple:

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

String.replace prendrait soin de cette assez facilement.

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

La combinaison LINQ et String.replace():

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