Как l oop присваивать символы в строке переменной? - PullRequest
0 голосов
/ 18 июня 2020

Мне нужно взять строку и назначить каждый символ новой строковой переменной для механизма преобразования текста в речь, чтобы считывать каждый символ отдельно, в основном для управления скоростью, с которой он считывается, путем добавления пауз между каждым символом.

Строка содержит число, длина которого может варьироваться от 6 до 16 цифр, и я собрал приведенный ниже код для 6 цифр, но хотел бы что-то более аккуратное, чтобы обрабатывать любое другое количество символов.

Я провел довольно много исследований, но, похоже, не нашел решения, плюс я новичок в Groovy / программировании.

OrigNum= "12 34 56"
Num = OrigNum.replace(' ','')
sNum = Num.split("(?!^)")
sDigit1 = sNum[0]
sDigit2 = sNum[1]
sDigit3 = sNum[2]
sDigit4 = sNum[3]
sDigit5 = sNum[4]
sDigit6 = sNum[5]

Изменить: причина необходимости нового переменная для каждого символа - это приложение, которое я использую, не позволяет механизму TTS запускать какой-либо код. Я должен специально объявить переменную заранее, чтобы она была прочитана

Пример ввода TTS: «Число [var: sDigit1] [pause] [var: sDigit2] [pause] ...»

Я пробовал использовать [var: sNum [0]] [var: sNum [1]] для чтения с карты вместо этого, но он не распознается.

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Не уверен на 100%, что вам нужно, но для преобразования входной строки в выходную вы можете использовать:

String origNum = "12 34 56"
String out = 'The number is ' + origNum.replaceAll( /\s/, '' ).collect{ "[var:$it]" }.join( ' [pause] ' )

дает:

Число [var: 1 ] [пауза] [var: 2] [пауза] [var: 3] [пауза] [var: 4] [пауза] [var: 5] [пауза] [var: 6]

0 голосов
/ 18 июня 2020

Прочтите это о динамическом создании имен переменных.

Вы можете использовать карту в своей позиции, которая более чистая и более groovy:

Map digits = [:]
OrigNum.replaceAll("\\s","").eachWithIndex { digit, index ->
    digits[index] = digit
}

println digits[0]       //first element == 1
println digits[-1]      //last element == 6
println digits.size()   // 6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...