Вы не можете удалить конец строки, так как File.WriteAllLines автоматически добавляет его, однако вы можете использовать этот метод:
public static void WriteAllLinesBetter(string path, params string[] lines)
{
if (path == null)
throw new ArgumentNullException("path");
if (lines == null)
throw new ArgumentNullException("lines");
using (var stream = File.OpenWrite(path))
using (StreamWriter writer = new StreamWriter(stream))
{
if (lines.Length > 0)
{
for (int i = 0; i < lines.Length - 1; i++)
{
writer.WriteLine(lines[i]);
}
writer.Write(lines[lines.Length - 1]);
}
}
}
Это не мое, я нашел его в .NET File.WriteAllLines оставляет пустую строку в конце файла
Для обнаружения VML вот то, что карты Google делают (поиск" function Xd
"):
function supportsVml() {
if (typeof supportsVml.supported == "undefined") {
var a = document.body.appendChild(document.createElement('div'));
a.innerHTML = '<v:shape id="vml_flag1" adj="1" />';
var b = a.firstChild;
b.style.behavior = "url(#default#VML)";
supportsVml.supported = b ? typeof b.adj == "object": true;
a.parentNode.removeChild(a);
}
return supportsVml.supported
}
я вижу то, что Вы имеете в виду о FF: это позволяет произвольным элементам быть созданными, включая vml элементы (<v:shape>
). Похоже, что это - тест для атрибут смежности , который может определить, интерпретируется ли созданный элемент действительно как объект vml.
Для обнаружения SVG, это работает приятно:
function supportsSvg() {
return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Shape", "1.0")
}
Я предложил бы одну тонкую настройку ответу crescentfresh - использование
document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1")
вместо
document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Shape", "1.0")
обнаружить SVG. WebKit в настоящее время очень требователен в отношении создания отчетов о функциях и возвращает false для feature#Shape
несмотря на наличие относительно основательной поддержки SVG. feature#BasicStructure
альтернатива предлагается в комментариях https://bugs.webkit.org/show_bug.cgi? id=17400 и дает мне ответы, которые я ожидал на (верном) Firefox/Opera/Safari/Chrome и IE (ложь).
Обратите внимание что implementation.hasFeature
подход проигнорирует поддержку через плагины, поэтому если Вы захотите проверить на, например, плагин Adobe SVG Viewer для IE, то необходимо будет сделать это отдельно. Я предположил бы, что то же верно для плагина RENESIS, но не проверило.
Вы можете пропустить это и использовать библиотеку JS, которая позволит вам делать векторную отрисовку кросс-браузером, если вы этого захотите. Библиотека будет обрабатывать это, выводя в SVG, если это поддерживается, или откат к холсту, VML, flash, silverlight и т.д., если это не поддерживается, в зависимости от того, что доступно.
Примеры библиотек, которые будут это делать, не в определенном порядке: