Выбор специальных слов из строки - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть String, который содержит несколько слов. Слова заключены в фигурные скобки. Я хочу отфильтровать все слова и сохранить его в Array. String ниже.

String messages="Dear {GUEST_TITLE} {GUEST_FIRST_NAME} {GUEST_LAST_NAME}, Your reservation no {RESERVATION_NUMBER};

Ответы [ 4 ]

0 голосов
/ 15 сентября 2018

Вы можете использовать RegEx с ArrayList:

List<String> result_array = new ArrayList<String>();
    int i = 0;
    Pattern CURLY_DELIMITER_REGEX = Pattern.compile("\\{(\\w+)\\}");
    String messages = "Dear {GUEST_TITLE} {GUEST_FIRST_NAME} {GUEST_LAST_NAME}, Your reservation no {RESERVATION_NUMBER}";
    Matcher matcher = CURLY_DELIMITER_REGEX.matcher(messages);
    while (matcher.find()) {
        result_array.add(matcher.group(1));
        i = i + 1;
    }
    System.out.print("Now the Result Array is :\n");
    for (String item : result_array) {
        System.out.println(item.toString());
    }
0 голосов
/ 15 сентября 2018

вы можете попробовать это:

Сначала замените все фигурные скобки и запятую на пустые "", а затем разделите их пробелом " "

String messages="Dear {GUEST_TITLE} {GUEST_FIRST_NAME} {GUEST_LAST_NAME}, Your reservation no {RESERVATION_NUMBER}";
char[] charr  = messages.replaceAll("[}{,]","").split(" "); 
System.out.println(Arrays.toString(charr)); 

output

[Dear, GUEST_TITLE, GUEST_FIRST_NAME, GUEST_LAST_NAME, Your, reservation, no, RESERVATION_NUMBER]
0 голосов
/ 15 сентября 2018
import java.util.*;

public class Main
{
    public static void main(String[] args) {
        String messages="Dear {GUEST_TITLE} {GUEST_FIRST_NAME} {GUEST_LAST_NAME}, Your reservation no {RESERVATION_NUMBER}";
        int len = messages.length();
        List<String> list = new ArrayList<>();
        for(int i=0; i< len; i++){
            if(messages.charAt(i) == '{'){
                int indexOfClosingBracket = messages.indexOf('}', i+1);
                list.add(messages.substring(i+1, indexOfClosingBracket));
                i = indexOfClosingBracket;
            }
        }

        for(String s : list){
            System.out.println(s);
        }
    }
}

Вот, пожалуйста ...

0 голосов
/ 15 сентября 2018

Сделайте это с помощью регулярного выражения;

Pattern CURLY_DELIMITER_REGEX = Pattern.compile("\\{(\\w+)\\}");
String messages = "Dear {GUEST_TITLE} {GUEST_FIRST_NAME} {GUEST_LAST_NAME}, Your reservation no {RESERVATION_NUMBER}";
Matcher matcher = CURLY_DELIMITER_REGEX.matcher(messages);
while (matcher.find()) {
    String value = matcher.group(1);
    System.out.println(value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...