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

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

Так, например, для следующей строки "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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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.

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