수색…


통사론

  • "문자열 리터럴"
  • '문자열 리터럴'
  • "문자열이 리터럴에 '불일치하는 따옴표'가 있습니다."// 오류가 없습니다. 따옴표가 다릅니다.
  • "이스케이프 된 따옴표가있는 문자열 리터럴" "// 오류가 없습니다. 따옴표가 이스케이프됩니다.
  • `템플릿 문자열 $ {표현식}`
  • String ( "ab c") // 생성자가 아닌 컨텍스트에서 호출 될 때 string을 반환합니다.
  • new String ( "abc") // 문자열 프리미티브가 아닌 String 객체

기본 정보 및 문자열 연결

JavaScript의 문자열은 Template Literals ( backticks ) 'hello' 에서 작은 따옴표 'hello' , 큰 따옴표 "Hello" 및 (ES2015, ES6의)로 `hello` 있습니다.

var hello  = "Hello";
var world  = 'world';
var helloW = `Hello World`;              // ES2015 / ES6

문자열은 String() 함수를 사용하여 다른 유형에서 만들 수 있습니다.

var intString = String(32); // "32"
var booleanString = String(true); // "true"
var nullString = String(null); // "null" 

또는 toString() 을 사용하여 숫자, 부울 또는 객체를 문자열로 변환 할 수 있습니다.

var intString = (5232).toString(); // "5232"
var booleanString = (false).toString(); // "false"
var objString = ({}).toString(); // "[object Object]"

String.fromCharCode 메서드를 사용하여 문자열을 만들 수도 있습니다.

String.fromCharCode(104,101,108,108,111) //"hello"

new 키워드를 사용하여 String 객체를 만들 수는 있지만 원시 문자열과 달리 Object와 유사하므로 권장되지 않습니다.

var objectString = new String("Yes, I am a String object");
typeof objectString;//"object"
typeof objectString.valueOf();//"string"

문자열 연결하기

문자열 연결은 + 연결 연산자 또는 String 객체 프로토 타입에 내장 된 concat() 메서드를 사용하여 수행 할 수 있습니다.

var foo = "Foo";
var bar = "Bar";
console.log(foo + bar);        // => "FooBar"
console.log(foo + " " + bar);  // => "Foo Bar"

foo.concat(bar)            // => "FooBar"
"a".concat("b", " ", "d")  // => "ab d"

문자열은 문자열이 아닌 변수와 연결될 수 있지만 문자열이 아닌 변수는 문자열로 유형 변환됩니다.

var string = "string";
var number = 32;
var boolean = true;

console.log(string + number + boolean); // "string32true"

문자열 템플릿

6

문자열은 템플릿 리터럴 ( backticks ) `hello` 사용하여 만들 수 있습니다.

var greeting = `Hello`;

템플릿 리터럴을 사용하면 템플릿 리터럴 내에서 ${variable} 사용하여 문자열 보간을 수행 할 수 있습니다.

var place = `World`;
var greet = `Hello ${place}!`

console.log(greet); // "Hello World!"

String.raw를 사용하면 백 슬래시를 수정하지 않고 문자열에 넣을 수 있습니다.

`a\\b` // =  a\b
String.raw`a\\b` // = a\\b

인용 부호 이스케이프

문자열이 작은 따옴표로 묶여 있다면, 역 슬래시 \ 하여 내부 따옴표를 이스케이프 처리해야합니다.

var text = 'L\'albero means tree in Italian';
console.log( text ); \\ "L'albero means tree in Italian"

큰 따옴표에 대해서도 동일합니다.

var text = "I feel \"high\"";

HTML 문자열은 따옴표를 많이 사용하기 때문에 문자열에 HTML 표현을 저장하는 경우 따옴표를 이스케이프 처리하는 데 특별한주의를 기울여야합니다.

var content = "<p class=\"special\">Hello World!</p>";        // valid String
var hello   = '<p class="special">I\'d like to say "Hi"</p>'; // valid String

HTML 문자열의 인용문은 &apos; (또는 &#39; ) 따옴표 등 &quot; (또는 &#34; ) &#34; 를 큰 따옴표로 사용하십시오.

var hi    = "<p class='special'>I'd like to say &quot;Hi&quot;</p>"; // valid String
var hello = '<p class="special">I&apos;d like to say "Hi"</p>';      // valid String

참고 : &apos; &quot; 브라우저가 속성 인용에 자동으로 붙일 수있는 큰 따옴표를 덮어 쓰지 않습니다. 예를 들어, <p class=special> 로 이루어지고 <p class="special"> 하여, &quot; <p class=""special""> \"<p class="special"> 이 될 수 있습니다.

6

문자열이있는 경우 '" 당신은 탈출 할 필요가 없습니다 (또한 이전 ES6 버전에서 템플릿 문자열로 알려진) 템플릿 리터럴 사용을 고려할 수 '" . 이것들은 작은 따옴표 나 큰 따옴표 대신 백틱 ( ` )을 사용합니다.

var x = `"Escaping " and ' can become very annoying`;

문자열 역방향

자바 스크립트에서 문자열을 뒤집는 가장 인기있는 방법은 다음과 같은 코드입니다.

function reverseString(str) {
    return str.split('').reverse().join('');
}

reverseString('string');    // "gnirts"

그러나 역순으로 처리되는 문자열에 서로 게이트 쌍이 포함되어 있지 않은 경우에만 작동합니다. 아스트랄 기호, 즉 기본 다국어 평면 외부의 문자는 두 개의 코드 단위로 표현 될 수 있으며,이 순진 기술로 인해 잘못된 결과가 발생합니다. 더욱이 결합 표시가있는 문자 (예 : 분음 기호)는 결합 된 원래 문자 대신 논리 "다음"문자에 나타납니다.

'𝌆■.'.split('').reverse().join(''); //fails

이 메서드는 대부분의 언어에서 제대로 작동하지만 문자열 반전을위한 진정한 정확성의 인코딩 존중 알고리즘이 약간 더 복잡합니다. 그러한 구현 중 하나는 Esrever 라는 작은 라이브러리로, 역전을 완벽하게 수행하기 위해 조합 기호와 서로 게이트 쌍을 일치시키는 정규식을 사용합니다.

설명

섹션 설명 결과
str 입력 문자열 "string"
String.prototype.split( deliminator ) 문자열 str 을 배열로 나눕니다. 매개 변수 "" 는 각 문자를 분리하는 것을 의미합니다. ["s","t","r","i","n","g"]
Array.prototype.reverse() 분할 된 문자열에서 요소를 역순으로 배열을 반환합니다. ["g","n","i","r","t","s"]
Array.prototype.join( deliminator ) 배열의 요소를 문자열로 결합합니다. "" 매개 변수는 빈 deliminator를 의미합니다 (즉, 배열 요소는 서로 바로 옆에 놓입니다). "gnirts"

스프레드 연산자 사용

6
function reverseString(str) {
    return [...String(str)].reverse().join('');    
}

console.log(reverseString('stackoverflow'));  // "wolfrevokcats"
console.log(reverseString(1337));             // "7331"
console.log(reverseString([1, 2, 3]));        // "3,2,1"

사용자 정의 reverse() 함수

function reverse(string) {
    var strRev = "";
    for (var i = string.length - 1; i >= 0; i--) {
        strRev += string[i];
    }
    return strRev; 
}

reverse("zebra");  // "arbez"

공백 제거

문자열의 가장자리에서 공백을 제거하려면 String.prototype.trim 사용하십시오.

"    some whitespaced string  ".trim();  // "some whitespaced string"

Internet Explorer 가 아닌 많은 자바 스크립트 엔진이 비표준 trimLefttrimRight 메서드를 구현했습니다. 현재 표준화 된 trimStarttrimEnd 메소드에 대해 프로세스의 1 단계에있는 제안 이 있습니다.이 메소드는 호환성을 위해 trimLefttrimRight 에 별명을 지정합니다.

// Stage 1 proposal
"    this is me    ".trimStart();  // "this is me    "
"    this is me    ".trimEnd();  // "    this is me"

// Non-standard methods, but currently implemented by most engines
"    this is me    ".trimLeft();  // "this is me    "
"    this is me    ".trimRight();  // "    this is me"

슬라이스가있는 부분 문자열

.slice() 를 사용하여 두 개의 인덱스가 주어진 부분 문자열을 추출하십시오.

var s = "0123456789abcdefg";
s.slice(0, 5);  // "01234"
s.slice(5, 6);  // "5"

하나의 인덱스가 주어지면 인덱스에서 문자열의 끝까지 걸립니다.

s.slice(10);    // "abcdefg"

문자열을 배열로 분할하기

.split 을 사용하여 문자열에서 분할 된 하위 문자열 배열로 이동하십시오.

var s = "one, two, three, four, five"
s.split(", ");  // ["one", "two", "three", "four", "five"]

배열 메소드 .join 을 사용하여 문자열로 돌아가십시오.

s.split(", ").join("--");  // "one--two--three--four--five"

문자열은 유니 코드입니다.

모든 JavaScript 문자열은 유니 코드입니다!

var s = "some ∆≈ƒ unicode ¡™£¢¢¢";
s.charCodeAt(5);  // 8710

JavaScript에는 원시 바이트 또는 2 진 문자열이 없습니다. 이진 데이터를 효과적으로 처리하려면 Typed Arrays를 사용하십시오.

문자열 감지

매개 변수가 기본 문자열인지 여부를 확인하려면 typeof :

var aString = "my string";
var anInt = 5;
var anObj = {};
typeof aString === "string";   // true
typeof anInt === "string";     // false
typeof anObj === "string";     // false

new String("somestr") 통해 String 객체를 가지고 있다면 위의 코드는 작동하지 않습니다. 이 경우, 우리가 사용할 수 있습니다 instanceof :

var aStringObj = new String("my string");
aStringObj instanceof String;    // true

두 인스턴스를 모두 커버하기 위해 간단한 도우미 함수를 작성할 수 있습니다.

var isString = function(value) {
    return typeof value === "string" || value instanceof String;
};

var aString = "Primitive String";
var aStringObj = new String("String Object");
isString(aString); // true
isString(aStringObj); // true
isString({}); // false
isString(5); // false

또는 ObjecttoString 함수를 사용할 수 있습니다. 이 메소드는 typeof 와 같은 다른 데이터 유형을 지원하기 때문에 switch 문에서 다른 유형을 확인해야하는 경우 유용 할 수 있습니다.

var pString = "Primitive String";
var oString = new String("Object Form of String");
Object.prototype.toString.call(pString);//"[object String]"
Object.prototype.toString.call(oString);//"[object String]"    

보다 견고한 솔루션은 문자열을 전혀 감지 하지 않고 필요한 기능 만 확인하는 것입니다. 예 :

var aString = "Primitive String";
// Generic check for a substring method
if(aString.substring) {

}
// Explicit check for the String substring prototype method
if(aString.substring === String.prototype.substring) {
    aString.substring(0, );
}

어휘 적으로 문자열 비교하기

문자열을 사전 순으로 비교하려면 localeCompare() . 이것은 참조 문자열이 비교 문자열 (매개 변수) 앞에 사전 식으로 (사전 순으로) 있으면, 음수 값을 반환하고 이후에 오는 경우 양수 값과 같으면 0 값을 반환합니다.

var a = "hello";
var b = "world";

console.log(a.localeCompare(b)); // -1

> 연산자와 < 연산자는 문자열을 사전 식으로 비교하는 데에도 사용할 수 있지만 0 값을 반환 할 수는 없습니다 (이 연산자는 == 항등 연산자로 테스트 할 수 있습니다). 결과적으로 localeCompare() 함수의 형식은 다음과 같이 작성할 수 있습니다.

function strcmp(a, b) {
    if(a === b) {
        return 0;
    }

    if (a > b) {
        return 1;
    }

    return -1;
}

console.log(strcmp("hello", "world")); // -1
console.log(strcmp("hello", "hello")); //  0
console.log(strcmp("world", "hello")); //  1

이것은 반환 값의 부호 (예 : sort )를 기반으로 비교하는 정렬 함수를 사용할 때 특히 유용합니다.

var arr = ["bananas", "cranberries", "apples"];
arr.sort(function(a, b) {
    return a.localeCompare(b);
});
console.log(arr); // [ "apples", "bananas", "cranberries" ]

대문자로 문자열

String.prototype.toUpperCase () :

console.log('qwerty'.toUpperCase()); // 'QWERTY'

소문자로 문자열

String.prototype.toLowerCase ()

console.log('QWERTY'.toLowerCase()); // 'qwerty'

단어 카운터

<textarea> 있고 다음에 대한 정보를 검색하려고한다고 가정 <textarea> .

  • 문자 (전체)
  • 문자 (공백 없음)
  • 윤곽
function wordCount( val ){
    var wom = val.match(/\S+/g);
    return {
        charactersNoSpaces : val.replace(/\s+/g, '').length,
        characters         : val.length,
        words              : wom ? wom.length : 0,
        lines              : val.split(/\r*\n/).length
    };
}


// Use like:
wordCount( someMultilineText ).words;   // (Number of words)

jsFiddle 예제

문자열의 인덱스에있는 문자에 액세스

charAt() 를 사용하여 문자열의 지정된 인덱스에있는 문자를 가져옵니다.

var string = "Hello, World!";
console.log( string.charAt(4) ); // "o"

또는 문자열을 배열처럼 처리 할 수 ​​있으므로 대괄호 표기법을 통해 색인을 사용하십시오.

var string = "Hello, World!";
console.log( string[4] ); // "o"

지정된 인덱스에있는 문자의 문자 코드를 가져 오려면 charCodeAt() .

var string = "Hello, World!";
console.log( string.charCodeAt(4) ); // 111

이 메소드는 모두 getter 메소드 (값을 반환)입니다. JavaScript의 문자열은 변경할 수 없습니다. 다시 말해 문자열 중 한 위치에 문자를 설정하는 데 사용할 수있는 문자열이 없습니다.

문자열 찾기 및 바꾸기 함수

문자열 내에서 문자열을 검색하려면 다음과 같은 여러 가지 기능이 있습니다.

indexOf( searchString )lastIndexOf( searchString )

indexOf() 는 문자열에서 searchString 이 처음 나타나는 색인을 반환합니다. searchString 이 없으면 -1 이 반환됩니다.

var string = "Hello, World!";
console.log( string.indexOf("o") ); // 4
console.log( string.indexOf("foo") ); // -1

마찬가지로, lastIndexOf()searchstring 이 마지막으로 발견 된 색인을 반환하거나 찾지 못한 경우 -1 반환합니다.

var string = "Hello, World!";
console.log( string.lastIndexOf("o") );   // 8
console.log( string.lastIndexOf("foo") ); // -1

includes( searchString, start )

includes()searchString 이 index start (기본값은 0)부터 시작하여 문자열에 searchString 이 있는지 여부를 알려주는 부울을 반환합니다. 하위 문자열의 존재 여부 만 테스트하면되는 경우 indexOf() 보다 낫습니다.

var string = "Hello, World!";
console.log( string.includes("Hello") ); // true
console.log( string.includes("foo") );   // false

replace( regexp|substring, replacement|replaceFunction )

replace()RegExp regexp 또는 문자열 substring 이 문자열 replacement 또는 replaceFunction 의 반환 값과 일치하는 모든 substring 을 포함하는 문자열을 반환합니다.

이것은 문자열을 제자리에 수정하지 않고 대체 문자열을 반환합니다.

var string = "Hello, World!";
string = string.replace( "Hello", "Bye" );
console.log( string ); // "Bye, World!"

string = string.replace( /W.{3}d/g, "Universe" );
console.log( string ); // "Bye, Universe!"

replaceFunction 은 정규 표현식 객체의 조건부 대체 (즉, regexp 와 함께 사용)에 사용할 수 있습니다. 매개 변수의 순서는 다음과 같습니다.

매개 변수 의미
match 정규 표현식 전체와 일치하는 부분 문자열
g1 , g2 , g3 , ... 정규 표현의 일치하는 그룹
offset 전체 문자열에서 일치 항목의 오프셋
string 전체 문자열

모든 매개 변수는 선택 사항입니다.

var string = "heLlo, woRlD!";
string = string.replace( /([a-zA-Z])([a-zA-Z]+)/g, function(match, g1, g2) {
    return g1.toUpperCase() + g2.toLowerCase();
}); 
console.log( string ); // "Hello, World!"

문자열 안의 하위 문자열 인덱스 찾기

.indexOf 메서드는 다른 문자열 안에있는 하위 문자열의 인덱스를 반환합니다 (존재하는 경우에는 문자열을 반환하고 그렇지 않으면 -1을 반환합니다)

'Hellow World'.indexOf('Wor');    // 7

.indexOf 는 또한 어떤 인덱스에서 함수가 찾고 있어야 하는지를 나타내는 추가 숫자 인자를 받아 들인다.

"harr dee harr dee harr".indexOf("dee", 10); // 14

.indexOf 는 대소 문자를 구분합니다.

 'Hellow World'.indexOf('WOR');    // -1

숫자의 문자열 표현

JavaScript는 Number 에서 2에서 36 까지의 임의의 기준에 대한 문자열 표현 을 기본 변환합니다.

10 진수 ( 10 진수 ) 이후의 가장 일반적인 표현은 16 진수 (16 진수) 이지만이 절의 내용은 해당 범위의 모든 기본에 적용됩니다.


Number 를 10 진수 (기수 10)에서 16 진수 (기수 16)의 String 표현으로 변환 하려면 toString 메소드를 기수 16 으로 사용할 수 있습니다.

// base 10 Number
var b10 = 12;

// base 16 String representation
var b16 = b10.toString(16); // "c"

표현 된 수치가 정수의 경우,이 반대의 조작은 parseIntradix 16 다시 할 수 있습니다.

// base 16 String representation
var b16 = 'c';

// base 10 Number
var b10 = parseInt(b16, 16); // 12

임의의 수 (즉, 비 정수)를 String 표현 에서 Number 로 변환하려면 연산을 두 부분으로 나누어야합니다. 정수 부분과 분수 부분.

6
let b16 = '3.243f3e0370cdc';
// Split into integer and fraction parts
let [i16, f16] = b16.split('.');

// Calculate base 10 integer part
let i10 = parseInt(i16, 16); // 3

// Calculate the base 10 fraction part
let f10 = parseInt(f16, 16) / Math.pow(16, f16.length); // 0.14158999999999988

// Put the base 10 parts together to find the Number
let b10 = i10 + f10; // 3.14159

참고 1 : 다른 기준으로 표현할 수있는 차이로 인해 작은 오류가 발생할 수 있으므로주의하십시오. 이후에 일종의 반올림을 수행하는 것이 바람직 할 수 있습니다.
참고 2 : 숫자의 매우 긴 표현은 변환이 발생한 환경의 숫자 의 정확성과 최대 값으로 인해 오류가 발생할 수도 있습니다.

문자열 반복

6

이 작업은 .repeat () 메소드를 사용하여 수행 할 수 있습니다.

"abc".repeat(3);  // Returns "abcabcabc"
"abc".repeat(0);  // Returns ""
"abc".repeat(-1); // Throws a RangeError
6

일반적인 경우 ES6 String.prototype.repeat () 메서드에 올바른 polyfill을 사용하여 수행해야합니다. 그렇지 않으면, 관용구 new Array(n + 1).join(myString) 은 문자열 myString n 번 반복 할 수 있습니다.

var myString = "abc";
var n = 3;

new Array(n + 1).join(myString);  // Returns "abcabcabc"

문자 코드

charCodeAt 메소드는 단일 문자의 유니 코드 문자 코드를 검색합니다.

var charCode = "µ".charCodeAt(); // The character code of the letter µ is 181

문자열에서 문자의 문자 코드를 얻으려면 문자의 0부터 시작하는 위치가 charCodeAt 의 매개 변수로 전달됩니다.

var charCode = "ABCDE".charCodeAt(3); // The character code of "D" is 68
6

일부 유니 코드 기호는 단일 문자에 맞지 않으며 인코딩하는 대신 두 개의 UTF-16 서로 게이트 쌍이 필요합니다. 이것은 2 16 이상 문자 코드의 경우 -로 검색 할 수있는 1 63553.이 확장 된 문자 코드 또는 코드 포인트codePointAt :

// The Grinning Face Emoji has code point 128512 or 0x1F600
var codePoint = "😀".codePointAt();


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow