Есть ли способ подсчитать количество символов из определенного слова в заданной строке в С#?

Я пытаюсь найти способ подсчитать количество символов в определенном слове, начиная с определенного символа из заданной строки в С#, используя только систему.

Так, например, для следующей строки "the weather outside is beautiful". Если я хочу подсчитать количество символов для слова «снаружи», используя, как правило, только первую букву (в данном случае это будет «о»), могу ли я как-то подсчитать количество символов, предшествующих о? (в данном случае будет 6).

Я думал, что это должно быть что-то вроде:

Если слово начинается с «o», то считать следующие символы и останавливать подсчет, когда мы находим пробел, возвращаем число.

Я пытался найти что-то подобное, но, к сожалению, мне это не удалось.

В качестве дополнения будет только одно слово, начинающееся с буквы о. (или другая буква, которая будет использоваться в качестве правила нахождения)

Я надеюсь, что вопрос достаточно ясен и спасибо заранее!

Разделите строку пробелами - вы получите список слов. Проверьте первую букву каждого слова, возьмите те, которые стоят 'o'. получить длину этих слов. Где твой код? минимальный воспроизводимый пример — вы что-нибудь исследовали? Как спросить ?

Patrick Artner 09.04.2022 11:04

Это было так очевидно. Искал что-то сложное, спасибо!

Bogdan Muscari 09.04.2022 11:06

Пытался прочитать этот вопрос, так и не понял зачем возвращать 6. Вы хотите «количество символов предшествующий o». Предшествующий означает: "перед чем-то по порядку", то есть вы хотите посчитать символы в "погоде"? Это 12 символов или 7 уникальных символов. Я не знаю, почему вы начинаете «Если слово начинается с «о», чем считать следующие символы» ??

Luuk 09.04.2022 12:18
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
3
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Общий подход будет заключаться в

  • Разделить () строку пробелами: вы получаете список слов
  • перебрать список и проверить первую букву каждого слова
  • если слово начинается с «о»: получить длину слова

вы можете сделать это либо с помощью String.Split() — используя System.Linq, либо даже с помощью простых циклов.

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

public class Program
{
    public static void Main()
    {
        var text = "the weather outside is beautiful";
        
        var word = "";
        foreach( var l in text)
        {
            if (word == "" && l == 'o')
            {
                word += l;
            } 
            else if (word != ""  && l == ' ')
            {
                System.Console.WriteLine(string.Format("{0} : {1}",
                                         word, word.Length));
                word = "";
            }
            else if (word != "")
            {
                word += l;
            }
        }
    }
}

Этот (и другие) вывод:

outside : 7

Использование String.Split():

public class Program
{
    public static void Main()
    {
        var text = "the weather outside is beautiful";

        var words = text.Split(' ');
        
        foreach( var w in words)
        {
            if (w.StartsWith("o"))
                System.Console.WriteLine(string.Format("{0} : {1}",
                                         w, w.Length));
        }
    }
}

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

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var text = "the weather outside is beautiful";
        
        var splitted = text
            .Split(' ')
            .Where(w => w.StartsWith("o", StringComparison.OrdinalIgnoreCase));
        
        foreach(var w in splitted)
            System.Console.WriteLine(string.Format("{0} : {1}", w, w.Length));      
    }
}

Возможно, используйте Regex:

var text = "the weather outside is beautiful";
var regex = new Regex(@"(o.*?)\b");
var length = regex.Match(text).Captures[0].Length;
Console.WriteLine(length);

Это дает 7.

Другие вопросы по теме