Java String.trim()은 몇 개의 공간을 삭제합니까?
자바에서는 다음과 같은 문자열이 있습니다.
" content ".
할 것이다String.trim()
양쪽의 모든 공간을 제거하시겠습니까, 아니면 각각 한 칸씩만 제거하시겠습니까?
전부 다.
반품:선행 및 후행 공백이 제거된 이 문자열의 복사본 또는 선행 또는 후행 공백이 없는 경우 이 문자열.
~ Java 1.5.0 문서에서 인용
(그런데 왜 직접 시도해 보지 않았지?)
소스 코드(디컴파일 완료):
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);
}
두 사람while
유니코드가 공백 문자 아래에 있는 시작과 끝의 모든 문자가 제거됨을 의미합니다.
확실하지 않은 경우 단위 테스트를 작성합니다.
@Test
public void trimRemoveAllBlanks(){
assertThat(" content ".trim(), is("content"));
}
NB: 물론 테스트(JUnit + Hamcrest)는 불합격하지 않습니다.
단, 한 가지 주의할 점은 String.trim은 "white space"라는 독특한 정의를 가지고 있다는 것입니다.Unicode 공백은 삭제되지 않지만 공백으로 간주되지 않을 수 있는 ASCII 제어 문자도 삭제됩니다.
이 메서드는 문자열의 처음과 끝에서 공백을 자르기 위해 사용할 수 있습니다.실제로 모든 ASCII 제어 문자도 자릅니다.
가능하면 Commons Lang의 String Utils.strip()을 사용할 수도 있습니다.이 String Utils.strip()는 Unicode 공백(및 늘 세이프)도 처리합니다.
String 클래스에 대한 API 참조:
선행 및 후행 공백을 생략하고 문자열 복사본을 반환합니다.
양쪽의 공백이 삭제됩니다.
주의:trim()
는 String 인스턴스를 변경하지 않고 새 개체를 반환합니다.
String original = " content ";
String withoutWhitespace = original.trim();
// original still refers to " content "
// and withoutWhitespace refers to "content"
여기 Java 문서를 바탕으로.trim()
는 일반적으로 공백으로 알려진 '\u0020'을 대체합니다.
단, '\u00A0'(유니코드 NO-BREAK 스페이스)에 주의해 주십시오.
)는 공백으로도 표시됩니다..trim()
이 기능은 삭제되지 않습니다.이것은 특히 HTML에서 흔히 볼 수 있습니다.
삭제하기 위해서는 다음을 사용합니다.
tmpTrimStr = tmpTrimStr.replaceAll("\\u00A0", "");
여기서 이 문제의 예를 설명했습니다.
Java의 예trim()
공백 삭제:
public class Test
{
public static void main(String[] args)
{
String str = "\n\t This is be trimmed.\n\n";
String newStr = str.trim(); //removes newlines, tabs and spaces.
System.out.println("old = " + str);
System.out.println("new = " + newStr);
}
}
산출량
old =
This is a String.
new = This is a String.
Java docs(String 클래스 소스),
/**
* Returns a copy of the string, with leading and trailing whitespace
* omitted.
* <p>
* If this <code>String</code> object represents an empty character
* sequence, or the first and last characters of character sequence
* represented by this <code>String</code> object both have codes
* greater than <code>'\u0020'</code> (the space character), then a
* reference to this <code>String</code> object is returned.
* <p>
* Otherwise, if there is no character with a code greater than
* <code>'\u0020'</code> in the string, then a new
* <code>String</code> object representing an empty string is created
* and returned.
* <p>
* Otherwise, let <i>k</i> be the index of the first character in the
* string whose code is greater than <code>'\u0020'</code>, and let
* <i>m</i> be the index of the last character in the string whose code
* is greater than <code>'\u0020'</code>. A new <code>String</code>
* object is created, representing the substring of this string that
* begins with the character at index <i>k</i> and ends with the
* character at index <i>m</i>-that is, the result of
* <code>this.substring(<i>k</i>, <i>m</i>+1)</code>.
* <p>
* This method may be used to trim whitespace (as defined above) from
* the beginning and end of a string.
*
* @return A copy of this string with leading and trailing white
* space removed, or this string if it has no leading or
* trailing white space.
*/
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
시작 및 길이 시작 후 String 클래스의 서브스트링 메서드를 호출합니다.
trim()
선행 및 후행 공백을 모두 제거합니다.단, 주의해 주십시오.끈은 바뀌지 않았어요. trim()
대신 새 문자열 인스턴스를 반환합니다.
String 입력이 다음과 같은 경우:
String a = " abc ";
System.out.println(a);
예, 출력은 "abc"가 됩니다.단, String 입력이 다음과 같습니다.
String b = " This is a test "
System.out.println(b);
은 '나다'가 됩니다.This is a test
따라서 트리밍은 문자열의 첫 번째 문자 앞과 마지막 문자 뒤의 공백만 제거하고 내부 공간은 무시합니다. 있는 입니다.String
트리밍 메서드는 문자열의 첫 번째 및 마지막 문자 앞뒤에 있는 공백을 제거하고 내부 공백을 제거합니다.도움이 됐으면 좋겠다.
public static String trim(char [] input){
char [] output = new char [input.length];
int j=0;
int jj=0;
if(input[0] == ' ' ) {
while(input[jj] == ' ')
jj++;
}
for(int i=jj; i<input.length; i++){
if(input[i] !=' ' || ( i==(input.length-1) && input[input.length-1] == ' ')){
output[j]=input[i];
j++;
}
else if (input[i+1]!=' '){
output[j]=' ';
j++;
}
}
char [] m = new char [j];
int a=0;
for(int i=0; i<m.length; i++){
m[i]=output[a];
a++;
}
return new String (m);
}
양쪽의 공간을 모두 제거합니다.
한 가지 매우 중요한 것은 완전히 "공백"으로 구성된 문자열이 빈 문자열을 반환한다는 것입니다.
그렇다면string sSomething = "xxxxx"
서, snowledge.x
, '공백 '공백', '공백', '공백',sSomething.trim()
을 사용하다
그렇다면string sSomething = "xxAxx"
서, snowledge.x
, '공백 '공백', '공백', '공백',sSomething.trim()
A
.
sSomething ="xxSomethingxxxxAndSomethingxElsexxx"
,sSomething.trim()
SomethingxxxxAndSomethingxElse
「 」의 번호가 되는 것에 해 주세요.x
단어 사이는 변경되지 않습니다.
패킷 combine을 사용합니다.trim()
다음 게시물에 나와 있는 것과 같은 regex를 사용합니다.Java를 사용하여 문자열에서 중복된 공백을 제거하려면 어떻게 해야 합니까?
가 없지만, 순서는 의미가 없습니다.trim()
첫 번째가 더 효율적일 것입니다.도움이 됐으면 좋겠다.
String의 인스턴스를 하나만 유지하려면 다음을 사용할 수 있습니다.
str = " Hello ";
아니면
str = str.trim();
으로, 「」, 「」의 값입니다.str
, 음, 음, 음, 음, 음이다.str = "Hello"
Trim()은 양쪽에서 모두 사용할 수 있습니다.
Javadoc for String에는 모든 세부 정보가 있습니다.양쪽 끝에서 공백(스페이스, 탭 등)을 삭제하고 새 문자열을 반환합니다.
어떤 방법을 사용할지 확인하려면 BeanShell을 사용할 수 있습니다.가능한 한 Java에 가깝게 설계된 스크립트 언어입니다.일반적으로 자바어 해석은 다소 느긋하다.이런 종류의 또 다른 선택지는 그루비 언어이다.이러한 스크립트 언어 모두 인터프리터 언어에서 알기 쉬운 Read-Eval-Print 루프를 제공합니다.콘솔을 실행하여 다음과 같이 입력할 수 있습니다.
" content ".trim();
"content"
Enter
(오류)Ctrl+R
그루비 ★★★★★★★★★★★★★★」
String formattedStr=unformattedStr;
formattedStr=formattedStr.trim().replaceAll("\\s+", " ");
언급URL : https://stackoverflow.com/questions/2198875/how-many-spaces-will-java-string-trim-remove
'programing' 카테고리의 다른 글
findBy / findAllBy의 스프링 데이터 JPA 차이 (0) | 2022.10.28 |
---|---|
영숫자만 허용하는 Javascript용 RegEx (0) | 2022.10.28 |
Panda 데이터 프레임에서 NaN 값이 들어 있는 열을 찾는 방법 (0) | 2022.10.28 |
ownCloud 서버: DBA_DEFAULT PHP 오류 (0) | 2022.10.28 |
PDF 파일을 HTML 링크로 다운로드하려면 어떻게 해야 합니까? (0) | 2022.10.28 |