2013-11-27 4 views
1

Вот отладчик. Я не понимаю, почему символ TrimEnd delete 's'. Before TrimEnd После TrimEnd() After TrimEnd Любые предложения?C# TrimEnd удаляет больше, чем необходимо?

recPath является частной строкой в ​​классе. код:

 recPath = ""; 
     recursiveFindPathRoot(node); 
     string[] argv = Regex.Split(recPath, "\\\\"); 

     //Current root path 
     string rootdat = argv[0]; 

     //Current lastkey 
     string valdat = argv[argv.Length - 3]; 
     string lastkey = valdat + "\\\\"; 

     string[] val_dat = Regex.Split(valdat , "--"); 

     //Getting value and data 
     string value = val_dat[0]; 
     string data = val_dat[1]; 
     string caption = value; 

     CollectDataInput("Please edit selected key", caption, out value, out data); 

     recPath = recPath.TrimEnd(lastkey.ToCharArray()); 
     recPath = recPath.Replace(@"\\", @"\"); 
+0

Показать ваш код как текст, а не как изображение .. –

ответ

5

Проблема заключается в том, что вы передаете в lastkey.ToCharArray() как список символов для отделки. Это включает в себя персонаж s, поэтому sFonts также обрезается. (То же обратный слэш.) Из документов для TrimEnd:

Метод TrimEnd удаляет из текущей строки всех конечных символов, которые в параметре trimChars. Операция обрезки останавливается, когда первый символ, который не находится в trimChars, встречается в конце строки.

Ожидает, что символы будут использоваться как одна строка, я подозреваю.

Если вы просто хотите удалить lastKey с конца recPath, вы можете использовать:

if (recPath.EndsWith(lastKey)) 
{ 
    recPath = recPath.Substring(0, recPath.Length - lastKey.Length); 
} 
1

MSDN:

Метод TrimEnd удаляет из текущей строки всех завершающих символов, в параметре trimChars. Операция триммера останавливается, когда первый символ, который не находится в trimChars, встречается в конце строки.

В основном, в вашем lastKey строки у вас есть символ «\» и полукокс «s», но не «т» ... так она удаляет все последние символы и останавливается на t "Шрифт".

TrimEnds не удаляет последовательный порядок символов. Вместо этого используйте подстроку (или LINQ).

1

Вы предоставили строку logPixels--50\\\\, после преобразования в массив символов она содержит s и другие символы.

Теперь trimEnd начните поиск этих символов в конце строки и продолжайте удалять, пока не достигнет t из font, который не был в массиве, где он перестает работать.

Смежные вопросы