Как я могу извлечь все цитаты в тексте?

Это зависит от варианта использования. Если вы хотите показывать разные изображения на ImageView, использование LeveListDrawable сделает ваш код более изолированным и чистым.

Скажем, в вашем ImageView вы должны показывать разные эмоции, как в Facebook, и вам нужно будет показать пользователю, какую реакцию он выбрал.

facebook emotions

Мы можем показывать правильное эмоциональное изображение каждый раз, используя оператор if или switch.

private void setProperImageForEmotion() {
    int emotion = 1; // Let's imagine 1 is for like, ... , 6 is for angry
    int resId = getCorrectDrawableSource(emotion);
}

private int getCorrectDrawableSource(int emotion) {
    switch (emotion) {
        case 2:
            return R.drawable.love;
        case 3:
            return R.drawable.haha;
        case 4:
            return R.drawable.wow;
        case 5:
            return R.drawable.sad;
        case 6:
            return R.drawable.angry;
        default:
            return R.drawable.like;
    }
}

Представьте себе, что в будущем вам придется добавить больше эмоций, что заставит вас добавить дополнительные элементы рисования к вашему утверждению switch. Однако использование LevelListDrawable сделает ваш код намного чище, и вам не нужно добавлять несвязанные идентификаторы рисования в ваш код Java или Kotlin. Поэтому, если мы изменим приведенный выше код на использование LevelListDrawable, ваш код будет выглядеть следующим образом:

  1. Вам необходимо создать файл для рисования, который будет содержать ссылки на другие объекты для рисования, и вы можете определять различные уровни: 1116]

  
  
  
  
  
  
 
  1. Теперь в вашем коде Java или Kotlin вы можете установить надлежащий уровень:
private void setProperImageForEmotion() {
    int emotion = 1; // Let's imagine 1 is for like, ... , 6 is for angry
    imageView.setImageLevel(emotion);
}

Как видите, это упрощает код. Также вы можете использовать LevelListDrawable для настройки значка в Notification и NotificationCompat .

5
задан brian d foy 5 December 2008 в 19:14
поделиться

4 ответа

Мне нравится это:

perl -ne 'print "$_\n" foreach /"((?>[^"\\]|\\+[^"]|\\(?:\\\\)*")*)"/g;'

Это является немного подробным, но это обрабатывает оставленные кавычки и отслеживание в обратном порядке намного лучше, чем самая простая реализация. То, что это говорит:

my $re = qr{
   "               # Begin it with literal quote
   ( 
     (?>           # prevent backtracking once the alternation has been
                   # satisfied. It either agrees or it does not. This expression
                   # only needs one direction, or we fail out of the branch

         [^"\\]    # a character that is not a dquote or a backslash
     |   \\+       # OR if a backslash, then any number of backslashes followed by 
         [^"]      # something that is not a quote
     |   \\        # OR again a backslash
         (?>\\\\)* # followed by any number of *pairs* of backslashes (as units)
         "         # and a quote
     )*            # any number of *set* qualifying phrases
  )                # all batched up together
  "                # Ended by a literal quote
}x;

Если Вам не нужно так много питания - говорят, что это, только, вероятно, будет диалоговое окно и не структурированные кавычки, то

/"([^"]*)"/ 

вероятно, работы о, а также что-либо еще.

7
ответ дан 18 December 2019 в 10:49
поделиться

Никакое regexp решение не будет работать, если Вы вложили кавычки, но для Ваших примеров это работает хорошо

$ echo \"HAL,\" noted Frank, \"said that everything was going extremely well\"  
 | perl -n -e 'while (m/(".*?")/g) { print $1."\n"; }'
"HAL,"
"said that everything was going extremely well"

$ cat eula.txt| perl -n -e 'while (m/(".*?")/g) { print $1."\n"; }'
"EULA"
"online"
"Software"
"Workstation Computer"
"Device"
"multiplexing"
"DRM"
"Secure Content"
"DRM Software"
"Secure Content Owners"
"DRM Upgrades"
"WMFSDK"
"Not For Resale"
"NFR,"
"Academic Edition"
"AE,"
"Qualified Educational User."
"Exclusion of Incidental, Consequential and Certain Other Damages"
"Restricted Rights"
"Exclusion des dommages accessoires, indirects et de certains autres dommages"
"Consumer rights"
5
ответ дан 18 December 2019 в 10:49
поделиться
grep -o "\"[^\"]*\""

Это держит для " + что-либо кроме кавычки, любое количество раз + "

-o заставляет его только произвести подобранный текст, не целую строку.

4
ответ дан 18 December 2019 в 10:49
поделиться
grep -o '"[^"]*"' file

Параметр '-o' печатает только шаблон

0
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

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