Строковый парсинг, извлекая числа и буквы

Разработчик Twilio здесь.

Вы, безусловно, могли бы сначала передать его в Studio Flow, как вы описали, а затем использовать HTTP-запрос для отправки всех данных на собственный URL-адрес webhook.

Чтобы отправить все данные на свой собственный URL, вам необходимо добавить все параметры и в виджет. Вы найдете все эти данные в объекте trigger внутри потока.

5
задан Matt Warren 10 April 2009 в 12:18
поделиться

5 ответов

Самый простой способ - это использовать регулярные выражения.

((?<number>\d+)(?<letter>[a-zA-Z])|(?<letter>[a-zA-Z])(?<number>\d+))

Затем вы можете сопоставить его со своей строкой и извлечь значение из групп.

Match match = regex.Match("10A");
string letter = match.Groups["letter"].Value;
int number = int.Parse(match.Groups["number"].Value);
12
ответ дан 18 December 2019 в 06:12
поделиться

Самый простой и быстрый способ - использовать простые строковые операции. Используйте метод IsDigit , чтобы проверить, где находится буква, и проанализируйте оставшуюся часть строки как число:

char letter = str[0];
int index = 1;
if (Char.IsDigit(letter)) {
   letter = str[str.Length - 1];
   index = 0;
}
int number = int.Parse(str.Substring(index, str.Length - 1));
6
ответ дан 18 December 2019 в 06:12
поделиться
char letter = str.Single(c => char.IsLetter(c));
int num = int.Parse(new string(str.Where(c => char.IsDigit(c)).ToArray()));

Это решение не слишком строгое (оно допускает такие вещи, как "5A2 "и верните" A "и 52), но это может подойти для ваших целей.

4
ответ дан 18 December 2019 в 06:12
поделиться

Чтобы отличаться:

string number = input.Trim("ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray());
string letter = input.Trim("0123456789".ToCharArray());
3
ответ дан 18 December 2019 в 06:12
поделиться

Вот как бы я подошел к этому. Вы можете пройти через это и поместить gc1 ["letter"], gc1 ["number"], gc2 ["letter"] и gc2 ["number"] в окно просмотра, чтобы увидеть, что это сработало (шаг после последнего строка кода здесь, конечно).

Обычное выражение будет принимать либо шаблон, требующий одну или несколько букв и цифр в каждом случае.

        Regex pattern = new Regex("^(?<letter>[a-zA-Z]+)(?<number>[0-9]+)|(?<number>[0-9]+)(?<letter>[a-zA-Z]+)$");
        string s1 = "12A";
        string s2 = "B45";
        Match m1 = pattern.Match(s1);
        Match m2 = pattern.Match(s2);
        GroupCollection gc1 = m1.Groups;
        GroupCollection gc2 = m2.Groups;
1
ответ дан 18 December 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: