Преобразование AH в ABCDEFGH VB.Net

Я разрабатываю программу, в которой конечный пользователь вводит строку (AB, AC, AD... AZ), эта строка будет преобразована, например...

Если это AC, строка будет преобразована в ABC и, в свою очередь, сгенерирует три текстовых файла с определенной информацией (FileA, FileB и FileC) и так далее для других строк.

If stringC = "A-C" then
    stringC = "ABC"
elseif stringC = "A-D" then
    stringC = "ABCD"
...
elseif stringC = "A-Z" then
    stringC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
End If

Я подумывал разработать его, используя условные выражения (if... then... elseif... End If), которые идентифицируют каждую строку, но у меня осталось бы очень обширное дерево условных операторов, если бы оно дошло до A-Z. Есть идеи, как это упростить?

С уважением, заранее спасибо.

Стоит ли изучать 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
1
62
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Предполагая, что ваша входная строка stringC всегда начинается с A и имеет правильный формат A-X, вы можете использовать метод строки Split для получения последнего символа. Затем вы можете получить индекс n последнего символа в строке, представляющей алфавит, ABCDEFGHIJKLMNOPQRSTUVWXYZ. Наконец, вы можете получить первые символы n из алфавита, чтобы получить расширенную версию входной строки.

Код будет примерно таким (пожалуйста, сверьтесь с вашим компилятором VB, у меня сейчас его нет под рукой)

Dim startEnd as String() = stringC.Split('-')
Dim lastLetter = startEnd(1)
Dim alphabet as String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Dim n as Integer = alphabet.IndexOf(lastLetter)
Dim result = alphabet.Substring(0, n) '// or maby n+1, test it
Ответ принят как подходящий

вы можете использовать подстроку, если вы передадите что-то вроде «D-X», используйте разделение, а затем получите индекс D и индекс X.

вот рабочий пример. https://dotnetfiddle.net/Ag0S81

  Dim alphabet As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      
        Dim GetAlphabetRange As Func(Of String, String) = Function(query As String) _
            alphabet.Substring(
                alphabet.IndexOf(Char.Parse(query.Split("-"c)(0))),
                alphabet.IndexOf(Char.Parse(query.Split("-"c)(1))) - 
                alphabet.IndexOf(Char.Parse(query.Split("-"c)(0))) + 1)

        ' Test the function with different ranges
        Console.WriteLine(GetAlphabetRange("A-N"))
        Console.WriteLine(GetAlphabetRange("C-F"))
        Console.WriteLine(GetAlphabetRange("X-Z"))

это работает. большое спасибо!!!!

LARC 19.06.2024 22:22

В этом решении используется Dictionary для хранения текстовых пар поиска и замены. Для заполнения массива используется цикл, но вы также можете жестко запрограммировать другие пары.

Затем мы используем цикл для применения замен. StringBuilder используется вместо String в целях повышения производительности.

' Set up a Dictionary with replacement text
Dim replacements As New Dictionary(Of String, String)
For i = 3 To 26
  Dim search = "A-" & Char.ConvertFromUtf32(64 + i)
  Dim replacement As New StringBuilder
  For j = 1 To i
    replacement.Append(Char.ConvertFromUtf32(64 + j))
  Next j
  replacements.Add(search, replacement.ToString)
Next i

Dim documentText As New StringBuilder("First fifteen letters of the alphabet are A-O, while the first eight are A-H")

' Use the Dictionary to replace the text
For Each replacement In replacements
  documentText.Replace(replacement.Key, replacement.Value)
Next replacement
Console.WriteLine(documentText)

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