문자열 작업을 위한 새로운 함수. 문자열 작업을 위한 새로운 함수 1c에서 문자열 작업

내장 언어 1C의 1C 8.3 행은 기본 유형의 값을 나타냅니다. . 가치 이런 유형의임의 길이의 유니코드 문자열을 포함합니다. 문자열 유형 변수는 따옴표로 묶인 문자 집합입니다.

예제 1. 텍스트가 포함된 문자열 변수를 만들어 보겠습니다.

StringVariable = "안녕하세요!";

1s 8.3에서 문자열 작업을 위한 함수

안에 이 구역 1c의 줄을 변경하거나 그 안에 포함된 정보를 분석할 수 있는 주요 기능이 제공됩니다.

힘길이

길이(<Строка>) . 매개변수로 전달된 문자열에 포함된 문자 수를 반환합니다.

예 2. "Hello world!" 줄의 문자 수를 세어 보겠습니다.

String = "안녕하세요!"; NumberofCharacters = StrLength(String); Report(숫자문자);

이 코드를 실행하면 해당 줄의 문자 수가 11로 표시됩니다.

약어

약어L(<Строка>) . 문자열의 첫 번째 유효 문자 왼쪽에 있는 중요하지 않은 문자를 자릅니다.
보조 문자:

  • 공간;
  • 중단되지 않는 공간;
  • 표;
  • 캐리지 리턴;
  • 라인 번역;
  • 양식(페이지) 번역.

예 3. "world!" 줄 왼쪽에서 공백을 모두 제거합니다. 그리고 여기에 "Hello" 줄을 추가하세요.

String = Abbreviation("세계!"); 문자열 = "안녕하세요"+문자열; 보고서(문자열);

이 코드를 실행하면 화면에 "Hello world!" 줄이 표시됩니다.

약칭

약어(<Строка>) . 문자열의 첫 번째 유효 문자 오른쪽에 있는 중요하지 않은 문자를 자릅니다.

예 4. "Hello" 및 "peace!" 줄의 양식 “Hello world!”라는 문구

Line = Abbreviation("안녕하세요 ")+" "+ Abbreviation(" world!"); 보고서(문자열);

약어LP

약어LP(<Строка>) . 문자열의 첫 번째 유효 문자 오른쪽에 있는 중요하지 않은 문자를 자르고, 문자열의 첫 번째 유효 문자 왼쪽에 있는 중요하지 않은 문자도 자릅니다. 이 기능더 보편적이기 때문에 이전 두 가지보다 더 자주 사용됩니다.

예시 5. 상대방 이름의 왼쪽과 오른쪽에 있는 중요하지 않은 문자를 제거합니다.

Counterparty = Directories.Counterparties.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

사자

사자(<Строка>, <ЧислоСимволов>) . 문자열의 첫 번째 문자를 가져옵니다. 문자 수는 매개변수에 지정됩니다. 문자 수.

예 6. 구조에 넣기 직원직원의 이름, 성 및 부칭을 포함합니다. 성과 이니셜이 포함된 문자열을 가져옵니다.

NameInitial = Lev(직원.이름, 1); Patronymic 이니셜 = Leo(직원. Patronymic, 1); FullName = Employee.LastName + " " + FirstName 이니셜 + "." + 중간 이니셜 + ".";

오른쪽

오른쪽(<Строка>, <ЧислоСимволов>) . 문자열의 마지막 문자, 매개변수에 지정된 문자 수를 가져옵니다. 문자 수.지정된 문자 수가 문자열 길이를 초과하면 전체 문자열이 반환됩니다.

예제 7. "yyyymmdd" 형식의 날짜를 문자열 변수 끝에 쓰고, 날짜가 포함된 문자열을 가져와서 유형으로 변환합니다. 날짜.

문자열 = " 현재 날짜: 20170910"; StringDate = Rights(String, 8); Date = Date(StringDate);

수요일

수요일(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . 매개변수로 전달된 문자열에서 하위 문자열을 가져옵니다. , 매개변수에 지정된 번호의 문자부터 시작 초기번호매개변수에 전달된 길이 문자 수.한 줄의 문자 번호는 1부터 시작합니다. 초기번호 0보다 작거나 같은 값이 지정된 경우 매개변수는 값 1을 사용합니다. 문자 수지정하지 않으면 줄 끝까지의 문자가 선택됩니다.

예 8. 9번째 위치부터 시작하는 문자열 변수에 지역 코드가 포함되도록 하고 이를 가져와서 별도의 줄에 작성해야 합니다.

String = "지역: 99 모스크바"; 지역 = 평균(문자열, 9, 2);

페이지찾기

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . 문자열에서 지정된 하위 문자열을 검색하여 찾은 하위 문자열의 첫 번째 문자 위치 번호를 반환합니다. 이 함수의 매개변수를 살펴보겠습니다.

  • . 소스 문자열;
  • 하위 문자열 검색. 하위 문자열을 검색합니다.
  • 검색방향. 문자열에서 부분 문자열을 검색할 방향을 지정합니다. 다음과 같은 값을 취할 수 있습니다.
    • 검색 방향.시작부터;
    • 검색.종료 방향;
  • 초기위치. 검색이 시작되는 문자열의 위치를 ​​지정합니다.
  • 발생 횟수. 소스 문자열에서 검색된 하위 문자열의 발생 번호를 지정합니다.

예 9. "Hello world!" 줄에서 "and" 문자가 마지막으로 나타나는 위치를 결정합니다.

PositionNumber = StrFind("안녕하세요!", "and", SearchDirection.End); Report(직위번호);

이 코드를 실행하면 "and" 기호가 마지막으로 나타나는 숫자인 9가 표시됩니다.

VReg

VReg(<Строка>) . 1s8의 지정된 문자열에 있는 모든 문자를 대문자로 변환합니다.

예제 10: "hello world!" 문자열을 변환합니다. 대문자로.

StringVreg = VReg("안녕하세요!"); 보고서(StringVreg);

이 코드를 실행하면 “HELLO WORLD!” 줄이 표시됩니다.

NReg

NReg(<Строка>) . 1s 8에 지정된 문자열의 모든 문자를 소문자로 변환합니다.

예제 11: "HELLO WORLD!" 문자열을 변환합니다. 소문자로.

StringNreg = NReg("안녕하세요!"); 보고서(StringVreg);

이 코드를 실행하면 "hello world!"라는 줄이 표시됩니다.

트레그

TReg(<Строка>) . 다음과 같이 문자열을 변환합니다. 각 단어의 첫 번째 문자는 대문자로 변환되고, 단어의 나머지 문자는 소문자로 변환됩니다.

예 12: "hello world!" 줄에 있는 단어의 첫 글자를 대문자로 사용하세요.

StringTreg = TReg("안녕하세요!"); 보고서(StringTreg);

이 코드를 실행하면 "Hello World!" 줄이 표시됩니다.

상징

상징(<КодСимвола>) . 유니코드 코드로 문자를 가져옵니다.

예 13. “Hello World!” 줄에 왼쪽과 오른쪽을 추가합니다. 기호 ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); 보고서(StringWithStars);

이 코드를 실행하면 “★Hello World!★” 줄이 표시됩니다.

기호 코드

기호코드(<Строка>, <НомерСимвола>) . 두 번째 매개변수에 지정된 위치에 있는 첫 번째 매개변수에 지정된 문자열에서 유니코드 문자 코드를 가져옵니다.

예제 14. “Hello World!” 줄의 마지막 문자 코드를 알아보세요.

String = "안녕하세요!"; CharacterCode = CharacterCode(String, StrLength(String)); 알림(CharacterCode);

이 코드를 실행하면 기호 코드 “!”가 표시됩니다. - 33.

빈 줄

빈 줄(<Строка>) . 문자열이 중요하지 않은 문자로만 구성되어 있는지, 즉 비어 있는지 확인합니다.

예제 15. 세 개의 공백으로 구성된 문자열이 비어 있는지 확인합니다.

비어 있음 = 비어 있음String(" "); 보고서(비어 있음);

이 코드를 실행하면 "Yes"라는 단어가 표시됩니다(논리 값의 문자열 표현). 진실).

페이지바꾸기

Str대체(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . 소스 문자열에서 검색 하위 문자열을 모두 찾아서 대체 하위 문자열로 바꿉니다.

예 16. "Hello World!" 줄에서 "평화"라는 단어를 "친구"라는 단어로 바꾸십시오.

String = StrReplace("Hello World!", "World", "Friends"); 보고서(문자열);

이 코드를 실행하면 "Hello Friends!"라는 줄이 표시됩니다.

StrNumberLines

StrNumberRow(<Строка>) . 여러 줄 문자열의 줄 수를 계산할 수 있습니다. 가기 위해 새 줄 1s 8에서는 기호가 사용됩니다. 추신(개행 문자).

예 17. 텍스트의 줄 수를 결정합니다.
"첫 번째 줄
두 번째 줄
세 번째 줄"

Number = StrNumberString("첫 번째 줄"+Characters.PS +"두 번째 줄"+Symbols.PS +"세 번째 줄"); 보고서(번호);

이 코드를 실행하면 텍스트의 줄 수가 표시됩니다. 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . 해당 번호로 여러 줄 문자열의 한 줄을 가져옵니다. 줄 번호는 1부터 시작됩니다.

예 18. 텍스트의 마지막 줄을 가져옵니다.
"첫 번째 줄
두 번째 줄
세 번째 줄"

Text = "첫 번째 줄" + 기호 PS + "두 번째 줄" + 기호 PS + "세 번째 줄"; LastRow = StrGetRow(Text, StrNumberLines(Text)); 보고서(마지막줄);

이 코드를 실행하면 "Third Line" 줄이 표시됩니다.

페이지 번호발생 횟수

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . 문자열에서 지정된 하위 문자열이 나타나는 횟수를 반환합니다. 이 함수는 대소문자를 구분합니다.

예 19. 대소문자에 관계없이 "Lines in 1s 8.3 and 8.2" 행에 문자 "c"가 몇 번 나타나는지 확인합니다.

Line = "1s 8.3 및 8.2의 라인"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Report(횟수);

이 코드를 실행하면 발생 횟수가 2로 표시됩니다.

페이지시작

StrStartsWith(<Строка>, <СтрокаПоиска>) . 첫 번째 매개변수에 전달된 문자열이 두 번째 매개변수의 문자열로 시작하는지 확인합니다.

예 20. 선택한 상대방의 TIN이 숫자 1로 시작하는지 확인합니다. 변수를 입력합니다. 상대방 상대방.

TIN = 상대방.TIN; StartsUNits = StrStartsWith(TIN, "1"); 단위로 시작하는 경우 Then //코드 EndIf;

페이지 끝

StrEndsWith(<Строка>, <СтрокаПоиска>) . 첫 번째 매개변수에 전달된 문자열이 두 번째 매개변수에 포함된 문자열로 끝나는지 확인합니다.

예 21. 선택한 상대방의 TIN이 숫자 2로 끝나는지 확인합니다. 변수를 입력합니다. 상대방디렉터리 요소에 대한 참조가 저장됩니다. 상대방.

TIN = 상대방.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //코드 EndIf;

페이지 분할

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . 지정된 구분 문자를 사용하여 문자열을 여러 부분으로 분할하고 결과 문자열을 배열에 씁니다. 첫 번째 매개변수는 소스 문자열을 저장하고, 두 번째 매개변수는 구분 기호를 포함하는 문자열을 포함하며, 세 번째 매개변수는 빈 문자열을 배열에 써야 하는지 여부를 나타냅니다(기본적으로) 진실).

예제 22. ";" 기호로 구분된 숫자가 포함된 문자열이 있고, 문자열에서 숫자 배열을 가져옵니다.

문자열 = "1; 2; 3"; Array = StrDivide(String, ";"); Count = 0 By Array.Quantity() - 1 사이클 시도 Array[Count] = Number(AbbrLP(Array[Count])); 예외 배열[Sch] = 0; EndAttemptsEndCycle;

실행 결과 1부터 3까지의 숫자가 포함된 배열이 생성됩니다.

페이지커넥트

StrConnect(<Строки>, <Разделитель>) . 첫 번째 매개변수의 문자열 배열을 두 번째 매개변수에 지정된 구분 기호로 구분된 배열의 모든 요소를 ​​포함하는 문자열로 변환합니다.

예제 23. 이전 예제의 숫자 배열을 사용하여 원래 문자열을 가져옵니다.

계정 = 0 By Array.Quantity() - 1 주기 Array[Act] = String(Array[Act]); 엔드사이클; Row = StrConnect(배열, "; ");

에게 기본 기능프로그래밍 언어에는 일반적으로 숫자와 문자열 작업이 포함됩니다. 일반적으로 이러한 기능은 컴파일러 코드에 하드 코딩되어 있습니다(또는 프로그래밍 언어의 "기본" 클래스가 구현됨).

1C에서는 문자열 작업 기능이 플랫폼 자체에 프로그래밍되어 있습니다. 오늘 우리는 내장된 1C 언어로 된 프로그램에서 1C 문자열로 작업하는 기능을 살펴보겠습니다.

라인 값 1C

1. 가장 간단한 것부터 시작해 보겠습니다. 변수를 생성하고 여기에 상수 문자열 값을 할당하는 것은 1C에서 다음과 같습니다.

변수 = "안녕하세요, 세상!";

상수 1C 문자열 값에 따옴표 문자를 지정해야 하는 경우 ""를 두 배로 늘려야 합니다.

변수 = "안녕하세요, 세계"!;

2. 줄 바꿈 1C는 동시에 두 가지 방법으로 지정할 수 있습니다. 첫 번째는 | 기호를 사용하는 것입니다.

변수 = "안녕하세요.
| 세계! ";

두 번째는 기호 시스템 열거를 사용하는 것입니다. 1C 줄 바꿈과 TAB와 같은 기타 인쇄되지 않는 문자를 모두 추가할 수 있습니다.

변수 = "안녕하세요" + 기호.PS + "평화!";

3. 1C의 구성은 하나의 언어(러시아어, 영어 또는 다른 언어)뿐만 아니라 여러 언어에 대해 동시에 개발할 수 있습니다. 이 경우 현재 사용되는 언어가 1C 창 하단에서 선택됩니다.

언어 목록은 일반/언어 분기의 구성 창에 있습니다. 각 언어에는 다음과 같은 짧은 식별자가 있습니다. 또는 영어.

이러한 구성을 프로그래밍할 때 1C 라인도 다국어가 가능하다는 것이 분명합니다. 이를 위해 다음을 통해 지정하여 이러한 1C 라인을 생성할 수 있습니다. 언어 식별자별 옵션:

변수 = "ru=""안녕, 세계! ""; en=""안녕, 세계! """;

평소와 같이 이렇게 형성된 1C 라인을 사용하면 그 안에 쓰여진 내용이 됩니다. 시스템이 이를 두 가지 옵션으로 분할하고 원하는 옵션을 사용하려면 НStr() 함수를 사용해야 합니다.

//이중 언어 구성에 적합합니다.
Report(NStr(변수));

라인 유형 1C의 소품

속성은 1C 디렉터리/문서의 필드입니다. 속성의 경우 해당 유형(숫자, 1C 문자열 등)이 정확하게 표시된다는 점에서 1C 언어 프로그램의 변수와 다릅니다. 소품이 무엇인지 기억을 되살려야 한다면 다음 강의를 시청하세요.

속성 유형(1C행)을 지정하는 경우 매개변수를 추가로 지정해야 합니다.

1C 라인은 무제한 길이(길이 = 0으로 표시됨)와 제한된 길이로 제공되어 정확한 문자 수를 나타냅니다. 무제한 길이의 1C 라인은 별도의 파일에 저장됩니다. SQL 테이블, 따라서 사용이 제한된 것보다 생산성이 떨어집니다.

그렇기 때문에 무제한 길이의 1C 문자열을 사용하는 데에는 한계가 있습니다. 모든 곳에서 사용할 수는 없습니다. 예를 들어 문서 번호, 참조 코드 또는 측정값으로는 허용되지 않습니다.

1C 문자열 작업

1C 플랫폼에는 문자열 작업을 위한 몇 가지 내장 기능이 있습니다.

  • AbbrLP(“놀랍지만 사실이에요!”)
    라인 1C에서 제거 여분의 공백. 모든 유형을 1C 문자열(예: 숫자)로 변환하는 데에도 사용할 수 있습니다.
  • 변수 = "Vasya" + AbbrLP(" plus") + "Olya"; //"Vasya + Olya"가 있을 것입니다.
    여러 1C 문자열 값을 합산하는 예입니다. 결과는 한 줄의 1C입니다.
  • 변수 = Lev("음악", 2); // "뮤"가 될 것입니다
    변수 = 매체("음악", 2, 2); //"위협"이 있을 것입니다
    변수 = Rights("음악", 2); //"ka"가 있을 거예요
    1C 문자열에서 하위 문자열을 얻기 위한 다양한 옵션입니다.
  • Variable = Find("음악", "zy"); //3개가 있을거에요
    문자열 1C에서 문자 1부터 시작하는 부분 문자열을 검색합니다.
  • 변수 = StrLength("음악"); //6개가 됩니다
    1C 라인의 문자 수를 반환합니다.
  • Report("Hello") //1C 창 하단의 메시지 창에서
    Alert("안녕하세요") //팝업 대화상자
    Status("Hello") //왼쪽 하단의 상태 표시 줄
    .

1C행에 객체 가져오기

아시다시피 현재 구조화된 정보를 교환하는 데 가장 널리 사용되는 형식은 XML입니다. 심지어 최신 버전 MS 사무실 단어 Excel은 이 형식의 파일을 저장합니다(각각 docx 및 xlsx는 확장자를 zip으로 변경하고 아카이버에서 엽니다).

데이터 교환을 위한 1C 플랫폼은 여러 옵션을 제공하며 그 중 주요 옵션은 XML이기도 합니다.

1. 가장 간단한 방법은 Abbreviation() 또는 String() 함수를 사용하는 것입니다. 요청 본문에서 REPRESENTATION() 함수를 사용할 수 있습니다. 해당 작업의 결과는 동일합니다. 즉, 사용자를 위한 1C 개체의 문자열 표현을 생성합니다.

기본적으로 디렉터리의 경우 이 이름이 해당 이름이 됩니다. 문서의 경우 – 문서 이름, 번호 및 날짜.

2. 모든 1C 개체(제한 있음)를 XML로 변환할 수 있으며 그 반대의 경우도 마찬가지입니다. 변환 프로세스를 직렬화라고 합니다.

StringViewXml = XMLString(값); //1C 값에서 XML 가져오기
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //XML 문자열에서 1C 값을 가져옵니다. 수신해야 하는 1C 유형을 지정해야 합니다.

3. 1C 객체를 문자열로 변환하는 1C 플랫폼 고유의 방법이 있습니다. 버전 1C 7.7에서 마이그레이션되었습니다. 이 형식은 다른 프로그램에서는 이해되지 않지만 다른 1C에서는 이해되므로 1C 데이터베이스 간의 교환에 쉽게 사용할 수 있습니다.

행 = ValueInRowInt(Value1C); //값 1C에서 문자열 1C를 얻습니다.
ValueVFile("C:\MyFile.txt", Value1C); //또 다른 옵션, 1C 값에서 저장된 문자열이 있는 파일을 얻습니다.
Value1C = ValueFromStringInt(String); //라인 1C에서 뒤로
Value1C = ValueFile("C:\MyFile.txt"); //파일에서 다시

양식에서 1C 라인 편집

1C 언어 프로그램에서 1C 문자열로 작업하는 것 외에도 사용자가 이를 편집할 수 있기를 바랍니다. 이에 대한 몇 가지 가능성이 있습니다:

1. 가장 쉬운 방법은 요청 시 1C 라인 항목을 요청하는 것입니다. 이 방법은 1C 프로그래밍을 가르칠 때 사용되며, 실제 생활에서는 훨씬 덜 자주 사용됩니다(그러나 사용됩니다!).

변수 = "";
Row = EnterValue(변수, "전체 이름을 입력하세요");

2. 1C 개체(디렉터리/문서) 또는 양식 세부 정보(참조)의 세부 정보를 표시하려면 입력 필드가 가장 자주 사용됩니다. 이는 사용자가 편집 필드 작업을 수행하는 데 사용되는 1C의 가장 일반적인 도구입니다.

3. 입력 필드의 기능을 확장할 수 있습니다(입력 필드 속성 참조, 마우스 오른쪽 버튼으로 클릭자세한 내용은 다음과 같습니다):

  • 확인란 여러 줄 편집 모드
  • 고급 편집 확인란(이전 확인란을 선택한 경우 사용 가능)
  • 확인란 비밀번호 모드(참조).

4. 입력 필드의 모든 기능이 충분하지 않은 경우 내장 편집기가 있습니다. 양식에 추가하려면 양식/삽입 제어 메뉴에 필드를 추가해야 합니다. 텍스트 문서. 해당 속성에서 작동 모드(확장 속성)를 지정할 수 있습니다.

텍스트 문서 필드는 데이터와 직접 연결할 수 없습니다. 다음 형식의 OnOpen() 이벤트 핸들러에 함수를 작성해야 합니다(참조).

양식 Elements.ElementNameTextDocumentField.SetText(StringValue); //여기서 ValueString은 예를 들어 속성에서 받은 텍스트입니다.

그리고 저장 핸들러(예: 저장 버튼)에서 저장을 추가합니다.

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //값여기의 줄은 값을 저장하는 속성입니다.

5. 1C 버전 8.2.11에서는 제어된 양식, 등장 새로운 기회 1C 라인 표현 – 서식이 지정된 문서 필드입니다.


텍스트 문서의 필드와 유사하게 문서를 열 때 설정해야 하고, 프로그램을 이용하여 직접 저장할 때 적어두어야 합니다.

  • 생성 중인 양식(디렉터리, 문서, 처리 등)의 1C 개체에서 값 저장소 유형의 속성을 추가합니다.
  • OnReadOnServer() 함수에서 속성의 텍스트를 설정합니다.

    //여기서 속성은 1C 객체에 추가된 속성입니다.
    //여기서 FormattedDocument는 편집할 양식의 필드 이름입니다.
    &서버에서

    FormattedDocument = CurrentObject.Attributes.Get();
    절차 종료

  • BeforeWritingOnServer() 함수에서 또는 버튼을 사용하여 필드의 텍스트를 작성합니다.

    &서버에서
    OnServer(CurrentObject)를 읽을 때의 절차
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    절차 종료

1C 쿼리에는 문자열 작업을 위한 메커니즘이 거의 없습니다. 먼저 라인을 추가할 수 있습니다. 둘째, 문자열에서 하위 문자열을 가져올 수 있습니다. 셋째, 패턴을 포함하여 문자열을 비교할 수 있습니다. 아마도 이것이 문자열로 할 수 있는 전부일 것입니다.

문자열 추가

쿼리에 행을 추가하려면 "+" 연산이 사용됩니다. 제한된 길이의 문자열만 추가할 수 있습니다.

SELECT "이름: " + 상대방. 이름 AS 열 1 FROM 디렉터리. 상대방 AS 상대방 WHERE 상대방. 링크 = 링크(&L)

하위 문자열 함수

하위 문자열(<Строка>, <НачальнаяПозиция>, <Длина>)

개체 모델의 Environment() 함수와 유사합니다. Substring() 함수는 문자열 데이터에 적용할 수 있으며 조각을 선택할 수 있습니다. <Строки> , 문자 번호로 시작 <НачальнаяПозиция> (한 줄의 문자는 1부터 번호가 매겨집니다) 및 길이 <Длина> 문자. 함수 계산 결과는 가변 길이 문자열 유형이며 다음과 같은 경우 길이는 무제한으로 간주됩니다. <Строка> 길이와 매개변수는 무제한입니다. <Длина> 상수가 아니거나 1024보다 크지 않습니다.

문자열의 길이가 두 번째 매개변수에 지정된 길이보다 작으면 함수는 빈 문자열을 반환합니다.

주목! SUBSTRING() 함수를 사용하여 무제한 길이의 문자열을 제한된 길이의 문자열로 변환하는 것은 권장되지 않습니다. 대신 형변환 연산자 EXPRESS()를 사용하는 것이 더 좋습니다.

유사한 기능

문자열 속성이 특정 기준을 충족하는지 확인해야 하는 경우 이를 비교합니다.

상대방 선택. 이름 AS 열 1 FROM 디렉터리. 상대방 AS 상대방 WHERE 상대방. 이름 = "Gazprom"

하지만 좀 더 미묘한 비교가 필요하다면 어떨까요? 단순히 평등이나 불평등이 아니라 특정 패턴과의 유사성? 이것이 바로 SIMILAR 기능이 만들어진 이유입니다.

LIKE — 문자열의 패턴 유사성을 확인하는 연산자입니다. SQL의 LIKE와 유사합니다.

SIMILAR 연산자를 사용하면 왼쪽에 지정된 표현식의 값을 오른쪽에 지정된 패턴 문자열과 비교할 수 있습니다. 표현식의 값은 문자열 유형이어야 합니다. 표현식의 값이 패턴과 일치하면 연산자의 결과는 TRUE가 되고, 그렇지 않으면 FALSE가 됩니다.

템플릿 문자열의 다음 문자는 서비스 문자이며 문자열 문자와는 다른 의미를 갖습니다.

  • %(퍼센트): 임의의 수의 임의 문자를 포함하는 시퀀스입니다.
  • _(밑줄): 임의의 문자 1개;
  • [...] (대괄호 안의 하나 이상의 문자): 대괄호 안에 나열된 단일 문자입니다. 열거형에는 범위가 포함될 수 있습니다. 예를 들어 a-z는 범위의 끝을 포함하여 범위에 포함된 임의의 문자를 의미합니다.
  • [^...] (대괄호 안의 부정 기호 뒤에 하나 이상의 문자가 옴): 부정 기호 다음에 나열된 문자 이외의 단일 문자입니다.

다른 기호는 그 자체를 의미하며 추가 부하를 전달하지 않습니다. 나열된 문자 중 하나를 그대로 작성해야 하는 경우 앞에 다음 문자를 붙여야 합니다.<Спецсимвол>. 내 자신<Спецсимвол>(적절한 기호)는 다음과 같은 문장에서 정의됩니다. 예어특수 기호.

String 유형은 모든 프로그래밍 언어에서 발견됩니다. 그것은 원시적이며 1C에는 작업을 위한 많은 기능이 있습니다. 이번 글에서는 좀 더 자세히 살펴보도록 하겠습니다 다양한 방법예제를 사용하여 1C 8.3 및 8.2의 문자열 유형 작업.

어떤 타입의 변수라도 문자열로 변환하기 위해서는 “String()”이라는 이름의 함수가 있습니다. 입력 매개변수는 변수 자체가 되며, 문자열 표현을 얻어야 합니다.

String(False) // "아니요"를 반환합니다.
String(12345) // "12,345"를 반환합니다.
String(CurrentDate()) //"07/21/2017 11:55:36″

기본 유형뿐만 아니라 디렉토리 및 문서 요소와 같은 다른 유형도 문자열로 변환할 수 있습니다.

SokrLP, SokrL, SokrP

이들 함수의 입력 매개변수는 문자열 유형의 변수입니다. 이 함수는 중요하지 않은 문자(공백, 캐리지 리턴 등)를 각각 왼쪽과 오른쪽에서, 왼쪽에서만, 오른쪽에서만 제거합니다.

Abbreviation(" 양쪽에서 공백이 제거됩니다. ") // "양쪽에서 공백이 제거됩니다."
Abbreviation(" 양쪽 공백이 제거됩니다. ") // " 왼쪽 공백이 제거됩니다. "
Abbreviation(" 양쪽 공백이 제거됩니다. ") // " 오른쪽 공백이 제거됩니다."

레오, 오른쪽, 중간

이 함수를 사용하면 문자열의 일부를 잘라낼 수 있습니다. "Left()" 함수는 문자열에서 지정된 길이의 왼쪽 부분을 반환합니다. "Right()" 함수는 유사하지만 오른쪽부터 자릅니다. "Avg()" 함수를 사용하면 선을 선택할 문자 수와 길이를 지정할 수 있습니다.

Lev("문자열 변수", 4) // "Str"을 반환합니다.
Right("문자열 변수", 7) // "변수"를 반환합니다.
Medium("문자열 변수", 2, 5) // "troco"를 반환합니다.

힘길이

이 함수는 문자열 변수에 포함된 문자 수를 결정합니다.

StrLength("Word") // 실행 결과는 숫자 5가 됩니다.

찾다

이 함수를 사용하면 문자열 변수에서 문자열의 일부를 검색할 수 있습니다. 반환 값은 찾은 문자열의 시작 위치를 나타내는 숫자입니다. 일치하는 항목이 없으면 0이 반환됩니다.

검색 시 대소문자를 구분한다는 점에 유의하세요. 원래 문자열에 검색 하위 문자열이 두 번 이상 나타나는 경우 함수는 첫 번째 항목의 시작 부분을 반환합니다.

Find("one, two, one, two, three", "two") // 함수는 숫자 6을 반환합니다.

빈 줄

이 함수를 사용하면 문자열이 비어 있는지 확인할 수 있습니다. 공백, 캐리지 리턴 등과 같은 보조 문자는 고려되지 않습니다.

EmptyString("Pupkin Vasily Ivanovich") // 함수는 False 값을 반환합니다.
EmptyString(" ") // 함수는 True 값을 반환합니다.

VReg, NReg, TReg

이러한 함수는 문자열 변수를 비교하고 변환할 때 매우 유용합니다. "Vreg()"는 원래 문자열을 대문자로 반환하고, "HPreg()"는 소문자로 반환하며, "TReg()"는 각 개별 단어의 첫 번째 문자가 대문자로 표시되고 이후의 모든 문자가 대문자로 표시되도록 형식을 지정합니다.

VReg("GENERAL DIRECTOR") // 반환 값 - "GENERAL DIRECTOR"
NReg(“CEO DIRECTOR”) // 반환 값 – “CEO”
TREG(“CEO DIRECTOR”) // 반환 값 – “General Director”

페이지바꾸기

이 기능은 대체와 유사합니다. 텍스트 편집기. 이를 통해 문자열 변수에서 한 문자나 문자 집합을 다른 문자로 바꿀 수 있습니다.

StrReplace("빨간색, 흰색, 노란색", ","", ";") // "빨간색; 하얀색; 노란색"

StrNumberLines

이 함수를 사용하면 텍스트 변수에서 캐리지 리턴으로 구분된 줄 수를 결정할 수 있습니다.

LineNumberRow 함수가 값 3을 반환하므로 아래 예제의 루프는 세 라운드를 거칩니다.

ind = 1 by StrNumber of Strings ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") 주기
<тело цикла>
엔드사이클;

StrGetString

이 기능은 이전 기능과 동일한 방식으로 여러 줄의 텍스트에 대해 작동합니다. 이를 통해 텍스트 변수에서 특정 문자열을 가져올 수 있습니다.

StrGetString("문자열1" + 문자.PS + "문자열2" + 문자.PS + "문자열3", 2) // "문자열2"를 반환합니다.

페이지 번호발생 횟수

이 함수는 검색 문자열에서 문자 또는 부분 문자열의 발생 횟수를 계산합니다.

StrNumberAttachments("a;b;c;d; ", ";") // 함수는 숫자 4를 반환합니다.

기호 및 기호 코드

이러한 함수를 사용하면 유니코드 인코딩의 코드로 문자를 얻을 수 있을 뿐만 아니라 문자 자체로 이 코드를 결정할 수도 있습니다.

SymbolCode("A") // 함수는 숫자 1,040을 반환합니다.
CharacterCode(1040) // 함수는 "A"를 반환합니다.

문자열 작업 시 일반적인 작업

문자열 연결

여러 문자열을 결합하려면(연결을 수행하기 위해) 더하기 연산자를 사용하면 충분합니다.

"Line 1" + "Line 2" //두 줄을 추가한 결과는 "Line 1 Line 2"가 됩니다.

유형 변환

유형을 문자열로 변환하려면(예: 디렉토리 요소에 대한 링크, 숫자 등) "String()" 함수를 사용하면 충분합니다. "ScrLP()"와 같은 함수도 변수를 문자열로 변환하지만 중요하지 않은 문자는 즉시 잘라냅니다.

String(1000) // "1,000"을 반환합니다.

숫자를 문자열로 변환할 때 프로그램은 천 단위를 구분하는 공백을 자동으로 추가합니다. 이를 방지하려면 다음 구성을 사용할 수 있습니다.

StrReplace(String(1000),Characters.NPP,"") // "1000"을 반환합니다.

String(Format(1000,"HG=")) // "1000"을 반환합니다.

문자열의 따옴표

문자열 변수에 따옴표를 지정해야 하는 경우가 종종 있습니다. 이는 구성자에 작성된 요청 텍스트이거나 단순한 변수일 수 있습니다. 이 문제를 해결하려면 따옴표 두 개만 설정하면 됩니다.

Header = String("Horns and Hooves LLC - 그게 우리야!") // "Horns and Hooves LLC - 그게 우리야!"를 반환합니다.

여러 줄, 줄 바꿈

여러 줄의 텍스트를 생성하려면 줄 바꿈(Symbols.PS)을 추가하기만 하면 됩니다.

MultilineText = “첫 번째 줄” + Symbols.PS + “두 번째 줄”

공백을 제거하는 방법

오른쪽이나 왼쪽의 공백을 제거하려면 "ScrAP()" 함수("ScrL()" 및 "ScrP()" 포함)를 사용할 수 있습니다.

StringNoSpaces = Abbreviation(" 많은 문자 ") // 함수는 "많은 문자" 값을 반환합니다.

숫자를 문자열로 변환한 후 제거해야 하는 경우 잘리지 않는 공백, 다음 구성을 사용하십시오.

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // "99999"를 반환합니다.

프로그래머는 종종 다음 구성을 사용하여 텍스트 변수의 모든 공백을 제거하거나 다른 문자로 바꿀 수 있습니다.

StringNoSpaces = StrReplace("hello","") // "hello"를 반환합니다.

문자열을 서로 비교하기

일반적인 등호를 사용하여 용어를 비교할 수 있습니다. 비교에서는 대소문자를 구분합니다.

"Hello" = "hello" // False를 반환합니다.
"Hello" = "Hello" // True를 반환합니다.
"Hello" = "Goodbye" // False를 반환합니다.

공유하다