Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2012, 14:58   #1
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию Распарсить строку (вытащить текст из нее)

Загружаю исходный код страницы в строку. Мне надо вытащить оттуда одно значение.
Я слышал про регулярные выражения, но никак разобраться не могу.

Есть такая строка:
Код HTML:
{"username":"RageGod","gravatarMd5":"d82e3e8acd651b57e0e95167c0ef18a6","userId":"2832658801600661648","createdAt":1320570924,"presence":
Отсюда мне надо вытащить такой текст "RageGod".
Кто-нибудь может дать код, как это сделать?

Спасибо заранее.
RageGod вне форума Ответить с цитированием
Старый 01.08.2012, 20:25   #2
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Код:
using System;
using Newtonsoft.Json;

[JsonObject(MemberSerialization.OptIn)]
public class JSObject
{
    [JsonProperty("username")]
    public string UserName { get; set; }

    [JsonProperty("gravatarMd5")]
    public string GravatarMd5 { get; set; }

    [JsonProperty("userId")]
    public string UserID { get; set; }

    [JsonProperty("createdAt")]
    public int CreatedAt { get; set; }

    [JsonProperty("presence")]
    public string Presence { get; set; }
}


class Program
{
    static void Main(string[] args)
    {
        string json =
            "{\n" +
            "    \"username\" : \"RageGod\", \n" +
            "    \"gravatarMd5\" : \"d82e3e8acd651b57e0e95167c0ef18a6\",\n" +
            "    \"userId\" :\"2832658801600661648\",\n" +
            "    \"createdAt\" : 1320570924, \n" +
            "    \"presence\": \"param\"\n" +
            "}";
        var obj = JsonConvert.DeserializeObject<JSObject>(json);
        Console.WriteLine(obj.UserName);
        Console.ReadKey(true);
    }
}
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 01.08.2012, 20:32   #3
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Код:
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        string json =
            "{\n" +
            "    \"username\":\"RageGod\", \n" +
            "    \"gravatarMd5\":\"d82e3e8acd651b57e0e95167c0ef18a6\",\n" +
            "    \"userId\":\"2832658801600661648\",\n" +
            "    \"createdAt\":1320570924, \n" +
            "    \"presence\":\"param\"\n" +
            "}";
        string pattern = "\"username\"\\s*:\\s*\"(?<username>\\w+)\"";
        Regex regex = new Regex(pattern, RegexOptions.Compiled);
        Console.WriteLine(regex.Match(json).Groups["username"].Value);
        Console.ReadKey(true);
    }
}
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 02.08.2012, 07:29   #4
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Смотрю на второй код.

А как быть, если текст не "RageGod", а другой.
Точнее, там 50 строк, и из всех 50 строк мне надо вытащить текст из этих тегов.
Там может быть не "RageGod", а "Rin123".
Просто в
Код:
string json
четко показано, что строка статистическая.
RageGod вне форума Ответить с цитированием
Старый 02.08.2012, 07:32   #5
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Ну подставляете другую строку и все. В чем проблема то?
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 02.08.2012, 07:43   #6
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Ах, да
Тупанул

Тогда еще вопрос будет
У меня в исходном коде содержится порядка 30-40 таких строк.
Как мне спарсить из всех? (вообщем парсить, пока не закончатся)
RageGod вне форума Ответить с цитированием
Старый 02.08.2012, 07:48   #7
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Вы циклы и массивы знаете? Если да, то считываете ваши строки в массив, а потом в цикле их обрабатываете. Если нет, то придется открыть книгу и почитать.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 02.08.2012, 08:14   #8
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Ваш код мне не подходит.
Сейчас обьясню почему:

Вообщем, получаю исходный код страницы через:
Код:
Parser_Acc = Client.DownloadString("http://site.com")
Далее, там содержится порядка 50 таких строк:
Код:
{"username":"Rage","gravatarMd5":"c5eb8270f9f3b6c94d58c850ff74d0f9","userId":"2832659598282172477","createdAt":1319820022,"presence":

{"username":"God","gravatarMd5":"7a5b911972d40d3efe98c335c79aa941","userId":"2832660339227530094","createdAt":1322863196,"presence":
Далее мне просто надо спарсить из Parser_Acc значения после тэга "username".
И пойти дальше по строке, чтобы найти все значения из такого тега.

Вот задача.
Ваш пример подойдет, если обращаться с аргументом (то есть, в качестве аргумента будет уже строка, в которой надо спарсить текст. А мне надо как-то спарсить и эту строку. Там не только такие строки, там 3000 строк, и данные строки содержаться ближе к концу).
RageGod вне форума Ответить с цитированием
Старый 02.08.2012, 08:55   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

У строк есть метод Split. По запятой он может тебе нарезать строку для дальнейшего поиска по нужному тебе тегу.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.08.2012, 09:14   #10
RageGod
Пользователь
 
Регистрация: 08.05.2012
Сообщений: 35
По умолчанию

Быстрее метода нету?
RageGod вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо распарсить строку celovec Общие вопросы Delphi 14 05.05.2011 17:52
Распарсить строку bulldog5293 Работа с сетью в Delphi 7 18.12.2010 19:25
Как вытащить строку из vector'a Tema_Crazzzy Общие вопросы C/C++ 2 12.09.2010 20:38
Как лучше распарсить строку? Molotoff Общие вопросы C/C++ 8 18.06.2009 18:37
Помогите распарсить строку Alexander1991 Помощь студентам 1 08.03.2009 22:33