Убедитесь, что sql_mode
подобен
sql_mode = NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES
, если это так, измените на
sql_mode = NO_ENGINE_SUBSTITUTION
OR
перезагрузите ваш сервер, изменив файл my.cnf (следующее задание)
innodb_large_prefix = on
Немного измененная версия других ответов (мне нравится это коротко и просто):
String[] words = str1.split("[!-~]* ");
Set<String> uniqueWords = new HashSet<String>();
for (String word : words) {
uniqueWords.add(word);
}
Примечание: если вы хотите разделить на !
или -
или ~
или пробел, вы должны использовать это:
String[] words = str1.split("[-!~\\s]+");
(черта должна быть первой или последней)
Я предлагаю вам использовать шаблон и сопоставление и отбросить результат в Set.
public void getWords()
{
Set<String> words = new HashSet<String>();
String pattern = "[a-zA-Z]+\\s";
String match = "hello world how* are. you! world hello";
Pattern compile = Pattern.compile(pattern);
Matcher matcher = compile.matcher(match);
while(matcher.find())
{
String group = matcher.group();
boolean add = words.add(group);
if(add)
{
System.out.println(group);
}
}
}
Выход:
hello
world
Измените свое определение того, что означает слово '- путем изменения шаблона.
Set не позволяет дублировать, где List позволяет дублировать.
String[] words;
Set<String> uniqueWords = new HashSet<String>();
words = str1.split("[!-~]* ");
for (int i = 0; i < words.length; i++)
uniqueWords.add(words[i]); //Here you need not to check with set because it wont allow duplicates
Если вы хотите получить слова, которые не были дублированы в предложении / любом виде текста, вы можете попробовать следующее:
public static Map<String,Integer> getUniqueWords(String sentence){
String[] word = sentence.split("[\\W]+");
Map<String,Integer> uniqueWord = new HashMap<>();
for (String e:word){
if(!uniqueWord.containsKey(e)){
uniqueWord.put(e,1);
}else{
uniqueWord.remove(e);
}
}
return uniqueWord;
}
str1.split("[\\W]+");
? – assylias 20 March 2013 в 14:28str1.split("[\\W]+");
даст вам слова (он будет разбивать строку каждый раз, когда находит небуквенный символ, например пунктуацию, пробел и т. д.). – assylias 20 March 2013 в 14:50