Files
VisualSapfor/src/Common/Utils/StringTemplate.java

55 lines
2.5 KiB
Java
Raw Normal View History

2023-09-17 22:13:42 +03:00
package Common.Utils;
import Common_old.Utils.Utils;
2023-09-17 22:13:42 +03:00
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringTemplate {
//https://javarush.ru/groups/posts/regulyarnye-vyrazheniya-v-java
public static String separator = "(\\s)+"; //хотя бы один пробел
public static String parameter = "(.)+"; //хотя бы один символ
//------------------------------------------------------------------
public String prefix = ""; //часть команды до параметра, запакованная через пробел
public String suffix = ""; //часть команды после параметра, запакованная через пробел
public String pattern = "";
//------------------------------------------------------------------
public StringTemplate(String p, String s) {
prefix = Utils.pack(p);
suffix = Utils.pack(s);
String[] prefix_words = prefix.split(" ");
String[] suffix_words = suffix.split(" ");
//настраиваем регулярное выражение----------
prefix = "^(\\s)*";
for (String word : prefix_words) {
if (!word.isEmpty())
prefix += (word + separator);
}
suffix = "";
for (String word : suffix_words) {
if (!word.isEmpty())
suffix += (separator + word);
}
suffix += "(\\s)*$";
pattern = prefix + parameter + suffix;
}
public static String getFirstMatch(String pattern_in, String text_in) {
Matcher m = Pattern.compile(pattern_in, Pattern.CASE_INSENSITIVE).matcher(text_in);
m.find();
return text_in.substring(m.start(), m.end());
}
public boolean check(String text_in) {
return Pattern.compile(pattern, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE).matcher(text_in).find();
}
public String check_and_get_param(String text_in) {
Pattern regex = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
Matcher matcher = regex.matcher(text_in);
if (matcher.find()) {
String sentence = text_in.substring(matcher.start(), matcher.end());
String prefix_ = getFirstMatch(prefix, sentence);
String suffix_ = getFirstMatch(suffix, sentence);
String param = sentence.substring(prefix_.length(), sentence.length() - suffix_.length());
return param;
}
return null;
}
}