Loading...
msmner avatar msmner 38 Точки

Здравей! 
Ето едно решение: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Extract_Person_Information
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());

            for (int i = 0; i < n; i++)
            {
                string input = Console.ReadLine();
                int indexOfNameStart = input.IndexOf('@');
                int indexOfNameEnd = input.IndexOf('|');
                string name = input.Substring(indexOfNameStart+1, indexOfNameEnd - indexOfNameStart-1);
                int indexOfAgeStart = input.IndexOf('#');
                int indexOfAgeEnd = input.IndexOf('*');
                string ageStr = input.Substring(indexOfAgeStart + 1, indexOfAgeEnd - indexOfAgeStart-1);
                Console.WriteLine($"{name} is {ageStr} years old.");
            }
        }
    }
}

1
kr.vandeva avatar kr.vandeva 0 Точки

Благодаря. Логиката ми гърми при вход abc@George|. С IndexOf е лесно, кратко и бързо :)

0
arnold avatar arnold 50 Точки

Много удобно се решава тази задача с регекс:

 

using System;
using System.Text.RegularExpressions;

namespace ExtractPersonInformation_MoreEx
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());

            for (int i = 0; i < n; i++)
            {
                string text = Console.ReadLine();

                string namePattern = @"@(?<name>[A-Za-z]+)\|";
                string agePattern = @"#(?<age>[0-9]+)\*";

                Match name = Regex.Match(text, namePattern);
                Match age = Regex.Match(text, agePattern);

                Console.WriteLine($"{name.Groups["name"]} is {age.Groups["age"]} years old.");
            }
        }
    }
}
 

0
VasilKos avatar VasilKos 17 Точки

Здравейте, къде бъркам в решението на JAVA  с Regex? Разгледах решението с substring, и то ми е ясно. Но къде бъркам тук?

ExtractPersonInformation - Pastebin.com

Пове4е ме интересува грешката в логиката, отколкото 100/100.

0
19/11/2021 10:44:39
VasilKos avatar VasilKos 17 Точки

Намерих си грешката: 

String age = matcherAge.group("age");  (не - String age = matcherName.group)

 

 
0
daniel123123 avatar daniel123123 27 Точки
using System;
using System.Linq;
class SoftUni {
    static void Main() {
        for (int n = int.Parse(Console.ReadLine()); n > 0; n--) {
            string input = Console.ReadLine();
            string name = input.Split('@')[1].Split('|')[0];
            string age = input.Split('#')[1].Split('*')[0];
            Console.WriteLine($"{name} is {age} years old.");
        }
    }
}

Може да ги split по специалните знаци, да вземем втория елемент, да split отново и да вземем първия елемент. 100/100

1
athristov avatar athristov 32 Точки

Предлагам и моето решение за Python със slice notation и намиране на индекса на конкретният знак. 

 

n = int(input())

for i in range(n):
    curr_text = input()

    name_start_index = curr_text.index("@")
    name_stop_index = curr_text.index("|")
    age_start_index = curr_text.index("#")
    age_stop_index = curr_text.index("*")

    name = curr_text[name_start_index + 1:name_stop_index]
    age = curr_text[age_start_index + 1:age_stop_index]

    print(f"{name} is {age} years old.")

или накратко: 

n = int(input())
for i in range(n):
    curr_text = input()
    print(f"{curr_text[curr_text.index('@') + 1:curr_text.index('|')]} is {curr_text[curr_text.index('#') + 1:curr_text.index('*')]} years old.")
0
11/11/2024 17:32:17
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.