Вопрос:
Поэтому я хочу, чтобы определить, содержит ли строка только определенные символы.
Скажем, я хочу посмотреть, состоит ли строка из только a,b,c как бы я это сделал
Пример строк, которые будут работать: a,aaaa,abc,cc,abc,cba ect
любая помощь была бы потрясающей
Ответ №1
Apache StringUtils для спасения – http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#containsOnly(java.lang.CharSequence, java.lang.String)
Ответ №2public boolean containsOnly(String str, String certain){ return str.matches(«[» + certain + «]*»); }
Это всегда будет содержать пустую строку, если вы хотите ее изменить, просто измените значение * на +.
Это использует регулярные выражения и довольно просто. Однако логика не раскрывается полностью. В принципе, он гарантирует, что строка соответствует любой комбинации символов в “определенных”.
containsOnly(«aaaa», «abc») -> True containsOnly(«abca», «abc») -> True containsOnle(«aaaz», «abc») -> False Ответ №3
Попробуй это:
boolean onlyCertainCharacters(String str, String certainCharacters) { for(int i=0;i<str.length();i++) //Check each character in the String { if(certainCharacters.indexOf(str.substr(i,1))==-1) //Return false if the character isn’t in the list of allowed characters { return false; } } return true; //If we haven’t returned yet, then all characters must match }
Применение:
onlyCertainCharacters(«aaaa,»abc») //==true onlyCertainCharacters(«aaad,»abc») //==false
Конечно, вы можете просто использовать регулярное выражение, но это не так весело.
Ответ №4
Это скажет вам, есть ли у вас оскорбительный характер.
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatch { private static void match(String REGEX, String INPUT) { Pattern p = Pattern.compile(REGEX); Matcher m = p.matcher(INPUT); int count = 0; while (m.find()) { count++; System.out.println(«nMatch number: » + count); System.out.println(«start() : » + m.start()); System.out.println(«end() : » + m.end()); System.out.println(«group() : » + m.group()); } } public static void main(String[] args) { match(«[^abc]», «zbc»); } }