Я пытаюсь найти способ подсчитать количество символов в определенном слове, начиная с определенного символа из заданной строки в С#, используя только систему.
Так, например, для следующей строки "the weather outside is beautiful"
. Если я хочу подсчитать количество символов для слова «снаружи», используя, как правило, только первую букву (в данном случае это будет «о»), могу ли я как-то подсчитать количество символов, предшествующих о? (в данном случае будет 6).
Я думал, что это должно быть что-то вроде:
Если слово начинается с «o», то считать следующие символы и останавливать подсчет, когда мы находим пробел, возвращаем число.
Я пытался найти что-то подобное, но, к сожалению, мне это не удалось.
В качестве дополнения будет только одно слово, начинающееся с буквы о. (или другая буква, которая будет использоваться в качестве правила нахождения)
Я надеюсь, что вопрос достаточно ясен и спасибо заранее!
Это было так очевидно. Искал что-то сложное, спасибо!
Пытался прочитать этот вопрос, так и не понял зачем возвращать 6
. Вы хотите «количество символов предшествующий o». Предшествующий означает: "перед чем-то по порядку", то есть вы хотите посчитать символы в "погоде"? Это 12 символов или 7 уникальных символов. Я не знаю, почему вы начинаете «Если слово начинается с «о», чем считать следующие символы» ??
Общий подход будет заключаться в
вы можете сделать это либо с помощью 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));
}
}
}
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
.
Разделите строку пробелами - вы получите список слов. Проверьте первую букву каждого слова, возьмите те, которые стоят
'o'
. получить длину этих слов. Где твой код? минимальный воспроизводимый пример — вы что-нибудь исследовали? Как спросить ?