Как правильно обрезать пробелы от строки в Java?

Хотя Подрывная деятельность пробует к , автоматически обнаруживают , является ли файл двоичным или нет, можно переопределить тип пантомимы с помощью svn propset. Например, svn propset svn:mime-type application/octet-stream example.txt. Это заставит Ваш файл действовать как набор байтов, а не текстового файла. См. также, svn руководство по Мобильность Файла .

41
задан Community 23 May 2017 в 12:00
поделиться

4 ответа

Google недавно сделал доступными библиотеки guava . В нем может быть то, что вы ищете:

CharMatcher.inRange('\0', ' ').trimFrom(str)

эквивалентно String.trim (), но вы можете настроить, что обрезать, см. JavaDoc.

Например, он имеет собственное определение WHITESPACE , которое отличается от JDK и определено в соответствии с последним стандартом Unicode, поэтому то, что вам нужно, можно записать как:

CharMatcher.WHITESPACE.trimFrom(str)
58
ответ дан 27 November 2019 в 00:39
поделиться

Клянусь, я увидел это только после того, как опубликовал вопрос: Google только что выпустил Guava , библиотеку основных утилит Java.

Я еще не пробовал это , но насколько я могу судить, он полностью совместим с Unicode:

String s = "  \t testing \u00a0"
s = CharMatcher.WHITESPACE.trimFrom(s);
7
ответ дан 27 November 2019 в 00:39
поделиться

Я всегда считал, что trim хорошо работает почти для каждого сценария.

Однако, если вы действительно хотите включить больше символов, вы можете отредактировать метод strip из commons-lang , чтобы включить в него не только тест для Character.isWhitespace , но также и для Character.isSpaceChar , который кажется отсутствующим. А именно, следующие строки в stripStart и stripEnd , соответственно:

  • while ((start! = StrLen) && Character.isWhitespace (str.charAt (start)))
  • while ((end! = 0) && Character.isWhitespace (str.charAt (end - 1)))
2
ответ дан 27 November 2019 в 00:39
поделиться

Действительно сложно определить, что представляют собой пробелы. Иногда я использую неразрывные пробелы, чтобы убедиться, что они не сорваны. Так что будет сложно найти библиотеку, которая бы делала именно то, что вы хотите.

Я использую свой собственный trim (), если хочу обрезать все пробелы. Вот функция, которую я использую для проверки пробелов,

  public static boolean isWhitespace (int ch)
  {
    if (ch == ' ' || (ch >= 0x9 && ch <= 0xD))
      return true;
    if (ch < 0x85) // short-circuit optimization.
      return false;
    if (ch == 0x85 || ch == 0xA0 || ch == 0x1680 || ch == 0x180E)
      return true;
    if (ch < 0x2000 || ch > 0x3000)
      return false;
    return ch <= 0x200A || ch == 0x2028 || ch == 0x2029
      || ch == 0x202F || ch == 0x205F || ch == 0x3000;
  }
3
ответ дан 27 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

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