Nano Hash - криптовалюты, майнинг, программирование

C# поиск символов между скобками

Я не могу заставить его работать, мне нужно получить персонажа ex : я [L]ove [B]аскетбол и [хоккей]

я хотел бы взять L, B и H из этой строки и показать их в строке записи консоли без использования регулярного выражения. Я думал о поиске позиции [ с indexof и добавить + 1, чтобы получить букву, а затем заменить [ на что-то еще, например: [ в &, чтобы я мог сделать скобку foreach в этой строке... но я не думаю, что это сработает oO

Console.WriteLine("Characters are : ");
foreach(Brackets in sentence)..

  • Это вопрос домашнего задания? 25.02.2014
  • Почему нельзя использовать регулярное выражение? 25.02.2014
  • @Lloyd Потому что это можно сделать без регулярного выражения относительно легко. 25.02.2014

Ответы:


1
string str = " i [L]ove [B]asketball and [H]ockey";
string[] array = str.Split('[');
foreach (var item in array)
{
    if(item.Contains(']'))
        Console.WriteLine(item[0]);
}

и вы получите:

L
B
H

Это будет работать, если у вас нет непарных квадратных скобок и между этими квадратными скобками есть символ.

25.02.2014
  • что, если я использовал a , чтобы разделить строку?... например, если у меня есть str=i ,L,ove ,B,asketball и ,H,ockey, и теперь я хочу получить LBH, что мне делать? 26.02.2015

  • 2

    Вы можете сделать это без разделения:

    string str = " i [L]ove [B]asketball and [H]ockey";
    
    for (int i = 0; i < str.Length; i++)
    {
        if(str[i] == '[')
            Console.WriteLine(str[1 + i++]);
    }
    
    25.02.2014
  • Если вы используете пре-инкремент, а не пост-инкремент в теле вашего цикла, это сделает его чище. 25.02.2014

  • 3

    Использование LINQ:

    string s = "i [L]ove [B]asketball and [H]ockey";
    var chars = s.Where((c, i) => i > 0            && s[i - 1] == '[' && 
                                  i < s.Length - 1 && s[i + 1] == ']');
    

    Эквивалентно:

    var chars = Enumerable.Range(1, s.Length - 2)
                          .Where(i => s[i - 1] == '[' && s[i + 1] == ']')
                          .Select(i => s[i]);
    
    25.02.2014

    4

    Вы можете использовать это регулярное выражение для получения значений между скобками:

    string input = "I [L]ove [B]asketball and [H]ockey";
    var regex = new Regex(@"\[.*?\]");
    var matches = regex.Matches(input);
    foreach (var match in matches)
    {
        var letter = Regex.Replace(match.ToString(), @"\[|\]", string.Empty);
        Console.WriteLine(letter);
    }
    
    25.02.2014

    5

    С регулярным выражением:

    string str = " i [L]ove [B]asketball and [H]ockey";
    Match match = Regex.Match(str, @"\[(.*?)\]");
    StringBuilder sb = new StringBuilder();
    //iterate over all matches
    do
    {
     sb.Append(match);
     match = match.NextMatch();
    }while(match.Success); //condition
    //note: Dump() only works in linqpad. Use Console.WriteLine() instead
    sb.Dump();
    //without brackets:
    sb.ToString().Split(new []{'[',']'}, StringSplitOptions.RemoveEmptyEntries).Dump();
    
    25.02.2014

    6

    Я придумал длинный код, но он работает во всех случаях

    Попробуй это:

       static  void Main()
        {
            string line =  "i [L]ove [B]asketball and [H]ockey";
            int count = 0;
            char temp=' ';
            string str="";
            foreach (char ch in line)
            {
                if (ch == '[')
                {
                    count++;
                }
                else if (count ==1)
                {
                    count++;
                    temp=ch;
                }
                else if(count==2 && ch==']')
                {
                    str+=temp;
                    count=0;
                }              
                else
                {
                    count = 0;
                }
            }
            Console.WriteLine(str);
        }
    
    25.02.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..