JavaScript Strings
Overview
문자열은 사용자 입력 데이터를 처리할 때, DOM 객체의 속성을 읽거나 설정할 때, 쿠키를 작동할 때 등 JavaScript의 거의 모든 곳에 있습니다. JavaScript의 핵심 부분은 문자열 분할, 문자열 대소문자 변경, 하위 문자열 작업 등과 같은 일반적인 문자열 작업을 위한 속성 및 메서드 집합을 제공합니다.
대부분의 최신 브라우저는 수많은 문자열 조작 작업을 크게 단순화하므로 정규 표현식의 강력한 이점을 활용할 수도 있지만 다소 가파른 학습 곡선을 극복해야 합니다. 여기서는 주로 문자열 자체에 대한 몇 가지 작업을 소개합니다. 정규식은 향후 에세이에서 다루겠습니다.
문자열 만들기
문자열을 만드는 방법에는 여러 가지가 있습니다. 가장 간단한 방법은 문자열 변수에 할당할 수 있는 문자 집합을 따옴표로 묶는 것입니다.
var myStr = "Hello, String!";
큰따옴표나 작은따옴표를 사용하여 문자열을 포함할 수 있지만 문자열을 구분하는 따옴표 쌍은 동일해야 하며 혼합할 수 없다는 점에 유의하세요.
var myString = "Fluffy is a Pretty cat.'; 과 같은 선언은 불법입니다.
두 가지 유형의 따옴표를 사용하여 특정 작업을 더 쉽게 만들 수 있습니다(예: 하나를 다른 하나에 포함).
document.write("");
us 위 스크립트는 다음을 생성합니다. 여러 문자열이지만 본질적으로 실제 문자열 개체는 아닙니다. 문자열 개체를 만들려면 다음 문을 사용하세요. var strObj = new String("Hello, String!");
typeof 연산자를 사용하면 위의 myStr 유형이 string이고 strObj 유형이 object임을 알 수 있습니다.
문자열의 길이를 알고 싶다면 길이 속성: string을 사용하세요.
문자열의 지정된 위치에서 문자를 가져옵니다. 사용법: string.charAt(index);
문자열 접합
문제:
두 개 이상의 문자열을 하나의 큰 문자로 연결합니다. 문자열 솔루션:
매우 간단합니다. 두 문자열을 "추가"하려면 "+":
var longString = "One piece " + "plus one more piece.";여러 문자열을 하나의 문자열로 합산하려면 "+=" 연산자를 사용할 수도 있습니다.
var result = ""; result += "My name is Anders" result += " and my age is 25";문자열에 개행 문자를 추가하려면 다음을 사용해야 합니다. 이스케이프 문자 "n":
var confirmString = "You did not enter a response to the last " + "question.\n\nSubmit form anyway?";var confirmValue = confirm(confirmString);
하지만 이 방법은 경고 및 확인 대화 상자와 같은 상황에서만 사용할 수 있습니다. 이 텍스트가 HTML 콘텐츠로 표시되면 유효하지 않습니다. 이 경우 "
"를 사용하여 바꾸세요.
var htmlString = "First line of string. Second line of string."; document.write(htmlString);
문자열 object는 또한 "+"와 동일한 기능을 수행하는 concat() 메서드를 제공합니다: string.concat(value1, value2, ...)
그러나 concat() 메서드는 분명히 "+"만큼 직관적이고 간결하지 않습니다. .
질문:
문자열 일부의 복사본을 얻습니다.
해결책:
substring() 또는 Slice() 메서드(NN4+, IE4+)를 사용하세요. 구체적인 사용법은 아래에 설명되어 있습니다.
substring()의 프로토타입은 다음과 같습니다. string.substring(from, to)
from의 첫 번째 매개변수는 원래 문자열에서 하위 문자열의 시작 위치를 지정합니다(0 기반 인덱스). 두 번째 매개변수는 선택사항입니다. 원본 문자열에서 하위 문자열의 끝 위치(0 기반 인덱스) 일반적으로 from보다 커야 합니다. 생략하면 하위 문자열이 원본 문자열의 끝으로 이동합니다.
from 매개변수가 실수로 to 매개변수보다 커지면 어떻게 되나요? JavaScript는 하위 문자열의 시작 및 끝 위치를 자동으로 조정합니다. 즉, substring()은 항상 두 매개변수 중 더 작은 매개변수에서 시작하여 더 큰 매개변수로 끝납니다. 그러나 시작 위치의 문자는 포함되지만 끝 위치의 문자는 포함되지 않습니다.
var fullString = "Every dog has his day."; var section = fullString.substring(0, 4); // section is "Ever". section = fullString.substring(4, 0); // section is also "Ever". section = fullString.substring(1, 1); // section is an empty string. section = fullString.substring(-2, 4); // section is "Ever", same as fullString.substring(0, 4);
slice()의 프로토타입은 다음과 같습니다. string.slice(start, end)
start 매개변수는 하위 문자열의 시작 위치를 나타냅니다. 음수인 경우 다음의 시작 위치로 이해될 수 있습니다. 예를 들어 -3은 아래쪽에서 세 번째부터 시작을 의미하며, 매개변수 end는 끝 위치를 나타냅니다. 시작과 마찬가지로 음수일 수도 있으며 그 의미는 끝에서 두 번째 위치의 끝을 나타냅니다. Slice()의 매개변수는 음수일 수 있으므로 substring()보다 더 유연하지만 덜 허용됩니다. start가 end보다 크면 빈 문자열이 반환됩니다(예는 생략됨). 또 다른 메소드는 substr()이며, 프로토타입은 string.substr(start, length)
프로토타입에서 매개변수의 의미를 볼 수 있습니다. start는 시작 위치를 나타내고 length는 부분 문자열의 길이를 나타냅니다. JavaScript 표준에서는 이 방법의 사용을 권장하지 않습니다.
5. 문자열 대소문자 변환
질문:
페이지에 도시와 같은 사용자의 입력 정보를 받는 텍스트 상자가 있으며, 이때 도시에 따라 자연스럽게 사용되는 처리가 다르게 됩니다. 비교한 다음 비교하기 전에 대소문자 변환을 수행하는 것이 가장 좋습니다. 그러면 변환 후 상황만 고려하면 됩니다. 그렇지 않으면 페이지에서 데이터를 수집한 다음 데이터베이스에 데이터를 저장하면 데이터베이스가 발생합니다. 대문자를 허용합니다. 이 경우 문자열의 대소문자 변환을 고려해야 합니다.
해결책:
toLowerCase() 및 toUpperCase() 메서드 사용:
var city = "ShanGHai";
city = city.toLowerCase(); // 도시는 이제 "shanghai"입니다.
두 문자열이 동일한지 확인
질문:
예를 들어, 사용자의 입력을 얻고 싶습니다. value 알려진 문자열과 비교
해결 방법:
먼저 모든 사용자 입력 값을 대문자(또는 소문자)로 변환한 후 비교합니다.
var name = document.form1.txtUserName.value.toLowerCase();
if(name = = "urname")
{
// 명령문은 여기에 있습니다.
}
JavaScript에는 두 개의 항등 연산자가 있습니다. 하나는 완전히 이전 버전과 호환되는 표준 "=="입니다. 두 피연산자 유형이 일치하지 않으면 어느 시점에서 자동으로 피연산자에 대한 유형 변환을 수행합니다. 다음 할당 문을 고려하세요.
var strA = " i love you!" ;
var strB = new String("i love you!");
이 두 변수는 동일한 문자 시퀀스를 포함하지만 데이터 유형이 다릅니다. 전자는 문자열이고 후자는 객체입니다. =" 연산자를 사용하면 JavaScript는 특정 상황에서 두 값이 동일한지 확인하기 위해 다양한 평가를 시도합니다. 따라서 다음 표현식은 true로 평가됩니다. strA == strB.
두 번째 연산자는 "엄격한" "==="입니다. 이는 평가할 때 그다지 관대하지 않으며 유형 변환을 수행하지 않습니다. 따라서 strA === strB 표현식은 두 변수가 모두 동일한 값을 보유하더라도 false로 평가됩니다.
때로는 코드 논리에 따라 두 값이 동일하지 않은지 확인해야 하는 경우도 있습니다. "!=" 및 엄격한 "!==" 관계는 "=="와 유사합니다. 그리고 "===" .
토론:
"==" 및 "!="는 평가할 때 일치하는 값을 찾기 위해 최선을 다하지만 작업을 수행하는 데 "도움"을 주기 위해 비교 전에 명시적인 유형 변환을 수행하는 것이 좋습니다. 예를 들어, 사용자의 입력 값(문자열)이 숫자와 같은지 확인하려는 경우 "=="를 사용하여 유형 변환을 완료할 수 있습니다.
if(document.form1.txtAge.value == someNumericVar) { ... }
미리 변환할 수도 있습니다:
if(parseInt(document.form1.txtAge.value) == someNumericVar) { ... }
강력한 형식의 프로그래밍 언어에 더 익숙하다면 (예: C#, Java 등), 여기에서 사용자 정의(유형 변환)를 계속할 수 있으며 이는 프로그램의 가독성도 향상시킵니다.
주의해야 할 것이 하나 있는데, 바로 컴퓨터의 지역 설정입니다. "<" 및 ">"를 사용하여 문자열을 비교하면 JavaScript는 이를 유니코드로 비교하지만 분명히 웹을 탐색하는 사람들은 텍스트를 유니코드로 읽지 않습니다. 예를 들어 스페인어에서는 "ch "는 "c"와 "d" 사이의 문자로 정렬됩니다. localeCompare()는 기본 로케일의 문자 조합을 사용하는 방법을 제공합니다.
var strings; // 초기화되었다고 가정할 문자열 배열
strings.sort(function(a,b) { return a.localeCompare(b) }) // sort() 메서드 호출 정렬하려면
문자열 검색
질문:
문자열에 다른 문자열이 포함되어 있는지 확인하세요.
해결 방법:
문자열의 indexOf() 메서드를 사용하세요.
strObj.indexOf(subString[, startIndex])
strObj는 판단할 문자열이고, subString은 strObj에서 찾을 하위 문자열이고, startIndex는 선택 사항이며 시작을 나타냅니다. 검색 위치(0부터 시작) startIndex를 생략하면 strObj의 처음부터 검색을 시작합니다. startIndex가 0보다 작으면 0부터 시작합니다. startIndex가 최대 인덱스보다 크면 검색을 시작합니다. 최대 지수.
IndexOf()는 strObj에서 subString의 시작 위치를 반환합니다. 찾을 수 없으면 -1을 반환합니다. 스크립트에서는 다음과 같이 사용할 수 있습니다:
(largestring.indexof (shortstring)! = -1) {
// 포함된 경우 그에 따라 내장 속성을 처리하여 문자열 길이를 계산합니다.
아아아아다음 섹션