2013-08-01 2 views
-7

Я хочу извлечь имя браузера и операционную систему в разных строках от этой строки. Как я могу использовать подстроку, чтобы извлечь их изКак извлечь строку с помощью C# Substring

{ Browser/leavethis (Operating System) Leavethis/Leavethis (Leavethis, Leavethis) Leavethis/Leavethis/Leavethis } 
+0

Знаете ли вы точную длину? Если нет: используйте регулярные выражения или комбинацию IndexOf/Substring –

+0

Итак, браузер - это обрезанный материал между (первым) «{» и первым «/», а операционная система - между первым »(« и первым »)»? Ну, это должно дать вам представление о том, что делать. – Corak

+0

Что вы пробовали? Что такое «Leavethis» - это значит, что он останется в строке? Как насчет брекетов, скобок и скобок? – slugster

ответ

1

Вместо разделения UserAgent, вы должны использовать свойства уже поставляли Asp.net Framework для обнаружения браузера/OS.

Используйте этот

  1. получить имя браузера Request.Browser.Browser и версию браузера Request.Browser.MajorVersion

  2. , чтобы получить операционную систему Имя Request.Browser.Platform и версия ОС Request.UserAgent

+0

Я решаю это, создавая следующие методы в файле кода и получая доступ к ним в html public String Browser (строка bro) { int end = bro.IndexOf ('(') ; строка Ь = братан; , если (! конец = -1) { Ь = bro.Substring (0, конец); } возврата б; } общественных строка вывода (строка OS) { INT end = os.IndexOf (')'); INT начала = os.IndexOf ('(') + 1;! INT TOT = конец - начало; строки б = Os; , если (конец = -1) { Ь = os.Substring (начало, TOT); } return b; –

0

регулярное выражение такого поскольку следующее должно работать, но я подозреваю, что ответ @ bastos.sergio - правильный способ получить то, что вам нужно.

Regex r = new Regex(@"{\s+(?<Browser>\w+)/[^(]+\((?<OperatingSystem>[^)]+).+"); 
string browser; 
string OS; 

var match = r.Match(s); 

if (match.Success) 
{ 
    browser = match.Groups["Browser"].Value; 
    OS = match.Groups["OperatingSystem"].Value; 
} 
Смежные вопросы