Сколько пробелов удалит Java String.trim ()?

public static bool HasConnection()
{
    try
    {
        System.Net.IPHostEntry i = System.Net.Dns.GetHostEntry("www.google.com");
        return true;
    }
    catch
    {
        return false;
    }
}

Это работает

119
задан Jasper 23 March 2014 в 01:16
поделиться

10 ответов

Все они .

Возвращает : Копию этой строки с удаленными начальными и конечными пробелами или этой строки, если в ней нет начальных или конечных пробелов.

~ Цитата из документации Java 1.5.0

(Но почему вы просто не попробовали и не убедились сами?)

168
ответ дан 24 November 2019 в 01:55
поделиться

Если вы хотите проверить, что будет делать какой-либо метод, вы можете использовать BeanShell . Это скриптовый язык, разработанный, чтобы быть как можно ближе к Java. Вообще говоря, он интерпретирует Java с некоторой релаксацией. Другим вариантом такого рода является язык Groovy. Оба этих языка сценариев обеспечивают удобное знание цикла Read-Eval-Print из интерпретируемых языков. Поэтому вы можете запустить консоль и просто набрать:

"     content     ".trim();

В результате вы увидите "content" после нажатия Enter (или Ctrl+R в консоли Groovy).

0
ответ дан 24 November 2019 в 01:55
поделиться

Javadoc для String содержит все подробности. Удаляет пробелы (пробелы, табуляции и т. Д.) С обоих концов и возвращает новую строку.

0
ответ дан 24 November 2019 в 01:55
поделиться

обрезка () удалит все начальные и конечные пробелы. Но имейте в виду: твоя последовательность не изменилась. trim () возвращает новый экземпляр последовательности.

-121--2039376-

Все они .

Возвращает : Копия этого ряда с удаленными белыми пространствами в начале и в конце, или эта последовательность, если у него нет белого космоса в начале или в конце.

~ Цитаты из Java 1.5.0 документов

(Но почему вы просто не попробовали это и не увидели сами?)

-121--2039360-

Trim () работает для обеих сторон.

0
ответ дан 24 November 2019 в 01:55
поделиться

Он удалит все пробелы с обеих сторон.

2
ответ дан 24 November 2019 в 01:55
поделиться

См. API для класса String:

Возвращает копию строки без начальных и конечных пробелов.

Пробелы с обеих сторон удалены:

Обратите внимание, что trim () не изменяет экземпляр String, он вернет новый объект:

 String original = "  content  ";
 String withoutWhitespace = original.trim();

 // original still refers to "  content  "
 // and withoutWhitespace refers to "content"
15
ответ дан 24 November 2019 в 01:55
поделиться

Однако следует отметить одну вещь: String.trim имеет своеобразное определение «пробелов». Он не удаляет пробелы Unicode, но также удаляет управляющие символы ASCII, которые вы не можете рассматривать как пробелы.

Этот метод может использоваться для удаления пробелов в начале и в конце строки; фактически, он также обрезает все управляющие символы ASCII.

Если возможно, вы можете использовать функцию StringUtils.strip () Commons Lang, которая также обрабатывает пробелы Unicode (и тоже является нулевой).

26
ответ дан 24 November 2019 в 01:55
поделиться

Если сомневаетесь, напишите модульный тест:

@Test
public void trimRemoveAllBlanks(){
    assertThat("    content   ".trim(), is("content"));
}

NB : конечно, тест (для JUnit + Hamcrest) не завершится неудачно

27
ответ дан 24 November 2019 в 01:55
поделиться

Из исходного кода (декомпилированный):

  public String trim()
  {
    int i = this.count;
    int j = 0;
    int k = this.offset;
    char[] arrayOfChar = this.value;
    while ((j < i) && (arrayOfChar[(k + j)] <= ' '))
      ++j;
    while ((j < i) && (arrayOfChar[(k + i - 1)] <= ' '))
      --i;
    return (((j > 0) || (i < this.count)) ? substring(j, i) : this);
  }

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

33
ответ дан 24 November 2019 в 01:55
поделиться

trim () удалит все начальные и конечные пробелы. Но имейте в виду: ваша строка не изменилась. trim () вместо этого вернет новый экземпляр строки.

3
ответ дан 24 November 2019 в 01:55
поделиться
Другие вопросы по тегам:

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