Casa / Mezzi sociali / 1c trova la seconda occorrenza nella stringa. Nuove funzioni per lavorare con le stringhe. Come rimuovere gli spazi

1c trova la seconda occorrenza nella stringa. Nuove funzioni per lavorare con le stringhe. Come rimuovere gli spazi

Il tipo String si trova in tutti i linguaggi di programmazione. È primitivo e in 1C ci sono molte funzioni per lavorarci. In questo articolo, daremo un'occhiata più da vicino vari modi lavorare con i tipi di stringa in 1C 8.3 e 8.2 con esempi.

Linea

Per convertire una variabile di qualsiasi tipo in una stringa, esiste la funzione "String ()" con lo stesso nome. Il parametro di input sarà la variabile stessa, di cui si vuole ottenere la rappresentazione in forma di stringa.

String(False) // restituisce "No"
String(12345) // restituisce "12 345"
Stringa(DataCorrente()) //"21.07.2017 11:55:36"

È possibile convertire in una stringa non solo tipi primitivi, ma anche altri, ad esempio elementi di directory e documenti.

Abbreviato LP, Abbreviato L, Abbreviato P

I parametri di input di queste funzioni sono una variabile di tipo stringa. Le funzioni rimuovono i caratteri non significativi (spazi, ritorni a capo, ecc.): rispettivamente dal lato sinistro e destro, solo dal lato sinistro e solo dal lato destro.

abbrl("Gli spazi su entrambi i lati verranno rimossi") // "Gli spazi su entrambi i lati verranno rimossi"
abbr("Gli spazi su entrambi i lati verranno rimossi") // "Gli spazi a sinistra verranno rimossi"
abbr("Gli spazi su entrambi i lati verranno rimossi") // "Gli spazi a destra verranno rimossi"

Leone, Destra, Medio

Queste funzioni consentono di tagliare parte di una stringa. La funzione Lion() restituirà la parte della stringa sul lato sinistro della lunghezza specificata. La funzione "Right()" è simile, ma il ritaglio viene eseguito a destra. La funzione "Wed()" consente di specificare il numero del carattere da cui verrà selezionata la stringa e la sua lunghezza.

Leone("Stringa variabile", 4) // restituisce "Stro"
Destra("Stringa variabile", 7) // restituisce "variabile"
avg("Stringa variabile", 2, 5)// restituisce "troco"

StrLunghezza

La funzione determina il numero di caratteri contenuti in una variabile stringa.

StrLength("Word") // il risultato dell'esecuzione sarà il numero 5

Trovare

La funzione permette di cercare una parte di una stringa in una variabile stringa. Il valore restituito sarà un numero che indica la posizione dell'inizio della stringa trovata. Se non vengono trovate corrispondenze, viene restituito zero.

Si noti che la ricerca fa distinzione tra maiuscole e minuscole. Se è presente più di un'occorrenza della sottostringa di ricerca nella stringa originale, la funzione restituirà l'inizio della prima occorrenza.

Find("uno, due, uno, due, tre", "due") // la funzione restituirà il numero 6

Linea vuota

L'utilizzo di questa funzione consente di determinare se una stringa è vuota. I caratteri insignificanti, come spazio, ritorno a capo e altri non vengono presi in considerazione.

EmptyString("Vasily Ivanovich Pupkin") // la funzione restituirà False
EmptyString(" ") // la funzione restituirà True

VReg, NReg, TReg

Queste funzioni sono molto utili quando si confrontano e convertono variabili stringa. "Vreg()" restituirà la stringa originale in maiuscolo, "HReg()" in minuscolo e "TReg()" la formatterà in modo che il primo carattere di ogni singola parola sia maiuscolo e tutti i caratteri successivi siano minuscoli.

VReg("DIRETTORE GENERALE") // valore restituito - "DIRETTORE GENERALE"
HReg("DIRETTORE GENERALE") // valore restituito - "CEO"
TReg("DIRETTORE GENERALE") // valore di ritorno - "Direttore Generale"

StrReplace

Questa funzioneè un analogo della sostituzione in editori di testo. Consente di sostituire un carattere o un set di caratteri con un altro nelle variabili stringa.

StrReplace("rosso, bianco, giallo", ",", ";") // restituisce "rosso; bianco; giallo"

StrNumeroRighe

La funzione consente di determinare il numero di righe separate da un ritorno a capo in una variabile di testo.

Il ciclo nell'esempio seguente passerà attraverso tre cerchi perché la funzione StrNumberRows restituirà il valore 3:

For ind \u003d 1 per StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") Loop
<тело цикла>
Fine Ciclo;

StrGetString

Questa funzione funziona con il testo multilinea allo stesso modo della precedente. Ti permette di ottenere una stringa specifica da una variabile di testo.

StrGetString("Stringa1" + Simboli.PS + "Stringa2" + Simboli.PS + "Stringa3", 2) // restituisce "Linea2"

StrNumberOccurrences

La funzione conta il numero di occorrenze di un carattere o di una sottostringa nella stringa cercata.

StrNumberInstallations("a;b;c;d; ", ";") // la funzione restituirà il numero 4

Simbolo e SimboloCodice

Queste funzioni ti consentono di ottenere un carattere in base al suo codice Unicode, nonché di determinare questo codice in base al carattere stesso.

SymbolCode("A") // la funzione restituirà il numero 1 040
SymbolCode(1040) // la funzione restituirà "A"

Compiti frequenti quando si lavora con le stringhe

Concatenazione di stringhe

Per concatenare più stringhe (concatenate) basta utilizzare l'operatore di addizione.

"Riga 1" + "Riga 2" //il risultato dell'aggiunta di due righe sarà "Riga 1 Riga 2"

Conversione del tipo

Per convertire un tipo in una stringa, ad esempio un riferimento a un elemento del dizionario, un numero e così via, è sufficiente utilizzare la funzione "String ()". Funzioni come "ShortLP()" convertiranno anche le variabili in una stringa, ma immediatamente tagliando i caratteri insignificanti.

String(1000) // restituirà "1000"

Si noti che durante la conversione di un numero in una stringa, il programma aggiunge automaticamente uno spazio che separa le migliaia. Per evitare ciò, è possibile utilizzare le seguenti strutture:

StrReplace(String(1000),Characters.NPP,"") // restituisce "1000"

String(Format(1000,"CH=")) // restituirà "1000"

Citazioni in una stringa

Molto spesso dovrai affrontare la necessità di inserire virgolette in una variabile stringa. Può essere sia un testo di richiesta scritto nel configuratore, sia solo una variabile. Per risolvere questo problema, devi solo impostare due virgolette.

Header = String("Horns and Hooves LLC siamo noi!") // restituisce "Roga and Hooves LLC siamo noi!"

Multilinea, interruzione di riga

Per creare un testo multilinea è sufficiente aggiungervi dei caratteri di interruzione di riga (Symbols.PS).

MultilineText = "Prima riga" + Caratteri.PS + "Seconda riga"

Come rimuovere gli spazi

Per rimuovere gli spazi a destra oa sinistra, puoi utilizzare la funzione "Stretch()" (così come "Scrpt()" e "ScreenP()"):

StringWithoutSpaces = ShortLP(" Molte lettere ") // la funzione restituirà il valore "Molte lettere"

Se, dopo aver convertito un numero in una stringa, è necessario rimuovere spazi non interrotti, utilizzare il seguente costrutto:

StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // restituisce "99999"

Inoltre, i programmatori utilizzano spesso la seguente costruzione, che consente di rimuovere o sostituire tutti gli spazi di una variabile di testo con un altro carattere:

StringWithoutSpaces = StrReplace(" ciao", " " ,"") // restituisce "ciao"

Confrontare le stringhe tra loro

Puoi confrontare i termini con il solito segno di uguale. Il confronto fa distinzione tra maiuscole e minuscole.

"hello" = "hello" // restituirà false
"Ciao" = "Ciao" // restituirà True
"Ciao" = "Arrivederci" // restituirà False

Le caratteristiche di base di un linguaggio di programmazione di solito includono il lavoro con numeri e stringhe. Di solito queste funzionalità sono cablate nel codice del compilatore (o vengono implementate classi "base" del linguaggio di programmazione).

In 1C, le capacità di lavorare con le stringhe sono programmate nella piattaforma stessa. Oggi considereremo le caratteristiche di lavorare con le stringhe 1C nei programmi nel linguaggio 1C integrato.

Valore riga 1C

1. Iniziamo con il più semplice. La creazione di una variabile e l'assegnazione di un valore costante di stringa ad essa assomiglia a questo in 1C:

Variabile = "Ciao mondo!";

Se vuoi specificare un carattere di citazione in un valore di stringa costante 1C, devi raddoppiarlo ""

Variabile = "Ciao, "mondo""!";

2. L'interruzione di riga 1C può essere specificata in due modi contemporaneamente. Il primo utilizza il simbolo |

Variabile = "Ciao,
| mondo! ";

Il secondo utilizza l'enumerazione del sistema Symbols. Ti consente di aggiungere sia un'interruzione di riga 1C che altri caratteri non stampabili, come TAB.

Variabile = "Ciao" + Symbols.ps + "pace!";

3. Le configurazioni in 1C possono essere sviluppate non solo per una lingua (russo, inglese o altro), ma contemporaneamente per più lingue. In questo caso, la lingua attualmente utilizzata è selezionata nella parte inferiore della finestra 1C.

L'elenco delle lingue si trova nella finestra di configurazione nel ramo Generale/Lingue. Ogni lingua ha un breve identificatore come it O ing.

È chiaro che durante la programmazione di tale configurazione, le linee 1C possono anche essere multilingue. Per fare ciò, è possibile creare una tale linea 1C specificando through; opzioni per ID lingua:

Variable = "ru=""Ciao, mondo!""; en=""Ciao, mondo! """;

Se usi la linea 1C formata in questo modo come al solito, allora sarà ciò che è scritto in essa. Affinché il sistema lo divida in due opzioni e utilizzi quella desiderata, è necessario utilizzare la funzione NStr():

//corretto per le configurazioni bilingue
Report(NStr(Variabile));

Puntelli con linea tipo 1C

Il requisito è un campo della directory / documento 1C. Differisce da una variabile in un programma in linguaggio 1C in quanto il suo tipo è indicato con precisione per l'attributo (numero, stringa 1C, ecc.). Se hai bisogno di rispolverare cosa sono gli oggetti di scena, dai un'occhiata al tutorial su .

Se si specifica il tipo di attributo - riga 1C, è necessario specificare anche i parametri.

Le stringhe 1C sono di lunghezza illimitata (indicata come lunghezza = 0) e lunghezza limitata, indicando il numero esatto di caratteri. Le stringhe 1C di lunghezza illimitata sono memorizzate in una tabella SQL separata, quindi il loro utilizzo è meno produttivo di quelle limitate.

Ecco perché l'uso di stringhe 1C di lunghezza illimitata ha i suoi limiti: non è possibile utilizzarle ovunque. Ad esempio, non è possibile come numero di documento, codice di elenco, misurazione.

Lavorare con le linee 1C

Per lavorare con le stringhe, ci sono diverse funzioni integrate della piattaforma 1C.

  • AbbrLP("Incredibile, ma vero!")
    Rimuove dalla riga 1C spazi aggiuntivi. Può anche essere utilizzato per convertire qualsiasi tipo in una stringa 1C (ad esempio numeri).
  • Variabile = "Vasya" + Abbrl("più") + "Olya"; //sarà "Vasya più Olya"
    Un esempio di somma di più valori di stringa 1C. Il risultato è una riga 1C.
  • Variabile = Leone("Musica", 2); // sarà "Mu"
    Variabile = Avg("Musica", 2, 2); // sarà "ps"
    Variabile = Diritti("Musica", 2); // sarà "ka"
    Varie opzioni per ottenere una sottostringa da una stringa 1C.
  • Variabile = Trova("Musica", "ps"); //sarà 3
    Cerca una sottostringa nella stringa 1C, a partire dal carattere 1.
  • Variabile = StrLength("Musica"); //sarà 6
    Restituisce il numero di caratteri in una stringa 1C.
  • Notify("Ciao") //nella finestra di messaggio nella parte inferiore della finestra 1C
    alert("ciao") //finestra popup
    Status("Hello") //nella riga di visualizzazione dello stato in basso a sinistra
    .

Portare oggetti alla linea 1C

Come sapete, attualmente il formato più popolare per lo scambio di informazioni strutturate è XML. Anche ultima versione SM Parola d'ufficio ed Excel salvano i file in questo formato (rispettivamente docx e xlsx, cambia l'estensione in zip, apri in un archiviatore).

La piattaforma 1C per lo scambio di dati offre diverse opzioni, la principale delle quali è anche XML.

1. Il metodo più semplice consiste nell'utilizzare la funzione ShortLP() o String(). È possibile utilizzare la funzione REPRESENTATION() nel testo della query. Il risultato della loro azione è lo stesso: generano una rappresentazione di stringa di qualsiasi oggetto 1C per l'utente.

Per la directory predefinita, questo sarà il suo nome. Per un documento, il nome, il numero e la data del documento.

2. Qualsiasi oggetto 1C (con restrizioni) può essere convertito in XML e viceversa. Il processo di conversione si chiama serializzazione.

ViewStringXml = XMLString(Valore); //ottenere XML dal valore 1C
Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //ottenere il valore 1C dalla stringa XML, è necessario specificare il tipo di 1C che deve essere ricevuto

3. Esiste un modo nativo della piattaforma 1C per convertire qualsiasi oggetto 1C in una stringa. È migrato dalla versione 1C 7.7. Questo formato non è compreso da altri programmi, ma comprende un altro 1C, il che ne semplifica l'utilizzo per lo scambio tra database 1C.

Stringa = ValoreInStringInt(Valore1S); //ottenere la stringa 1C dal valore 1C
ValueToFile("C:\MyFile.txt", Value1C); //un'altra opzione, otteniamo un file con una stringa salvata dal valore 1C
Valore1C = ValoreDaStringaInt(Stringa); //indietro dalla riga 1C
Valore1C = ValoreDaFile("C:\MioFile.txt"); //indietro dal file

Modifica delle righe 1C sul modulo

Oltre a lavorare con le stringhe 1C in un programma 1C, ovviamente, vorrei che l'utente fosse in grado di modificarle. Ci sono diverse possibilità per questo:

1. Il modo più semplice è richiedere l'ingresso della linea 1C su richiesta. Questo metodo viene utilizzato quando si insegna la programmazione 1C, nella vita viene utilizzato molto meno spesso (ma viene utilizzato!).

Variabile = "";
String = EnterValue(Variabile, "Inserisci il nome completo");

2. Per visualizzare i dettagli dell'oggetto 1C (directory / documento) oi dettagli del modulo (vedi), il campo di input viene utilizzato più spesso. Questo è lo strumento più comune in 1C per consentire all'utente di lavorare con i campi di modifica.

3. Le funzionalità del campo di input possono essere espanse (vedere le proprietà del campo di input, fare clic con il tasto destro su di esso, per maggiori dettagli):

  • Casella di controllo Modalità di modifica multilinea
  • Casella di controllo Modifica avanzata (disponibile se la casella di controllo precedente è selezionata)
  • Casella di controllo Modalità password (vedere ).

4. Se tutte le possibilità del campo di input non ti bastano, c'è un editor integrato. Per aggiungerlo al modulo, è necessario aggiungere un Campo nel menu Modulo / Inserisci controllo documento di testo. Nelle sue proprietà, puoi specificare la modalità del suo funzionamento: la proprietà Extension.

Un campo documento di testo non può essere collegato direttamente ai dati. E' necessario scrivere la seguente funzione nell'event handler del form OnOpening() (vedi ):

FormElements.ElementNameTextDocumentField.SetText(StringValue); //qui, ValueString è il testo ricevuto, ad esempio, dall'attributo

E nel gestore di salvataggio, ad esempio nel pulsante Salva, aggiungi un salvataggio:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString ecco gli oggetti di scena in cui salviamo il valore

5. Nella versione 1C 8.2.11, in forme gestite, apparso nuova opportunità rappresentazione della linea 1C - Campo del documento formattato.


Simile al campo di un documento di testo, è necessario impostare all'apertura e scrivere quando si salva il testo utilizzando il programma.

  • Nell'oggetto 1C, la forma di cui stiamo creando (libro di riferimento, documento, elaborazione, ecc.) - aggiungi un attributo con il tipo Value Storage
  • Nella funzione OnReadOnServer(), impostare il testo dall'attributo

    //qui Requisito è l'attributo aggiunto dell'oggetto 1C
    //qui FormattedDocument è il nome del campo nel modulo di modifica
    &Sul server

    FormattedDocument = CurrentObject.Attributes.Get();
    FineProcedura

  • Nella funzione BeforeWriteOnServer() o premendo il pulsante, scrivi il testo dal campo

    &Sul server
    Procedura InLetturaSuServer(OggettoCorrente)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    FineProcedura

PARTE 1. METODI (26).

1.1. Metodi di base (10). Indipendenti, costruiti sui loro semplici algoritmi.

Str_Complete() (imbottitura destra-sinistra con caratteri specificati).

Str_Inverse () (inversione - caratteri da destra a sinistra).

Str_Codes() (codici carattere attraverso "," e un array con codici)

Str_Symbols() (stringa da codici separati da "," o da un array con codici)

Str_ReplaceCharacters() (sostituzione di un carattere con un altro).

Str_FromArray() (stringa dall'array di frammenti separati da un separatore)

Str_FindIn() (cerca una sottostringa (anche a destra) con il numero di voce specificato).

Str_FindGr() (Cerca un gruppo di caratteri inclusi nel set di caratteri specificato)

Str_FindNumber() (Cerca un numero, incluso a destra con numero specificato occorrenze)

Str_Interpret() (a un array, secondo la sintassi stabilita)

1.2. Metodi derivati ​​(12). In realtà, questo è l'uso di quattro metodi-algoritmi generalizzati (vedi Parte 2)

Str_Number() (dall'inizio e dalla fine della stringa, non aver "paura" dei caratteri non numerici.

Str_Find() (cerca una sottostringa (inclusa la distinzione tra maiuscole e minuscole e sulla destra) con il numero di voce specificato).

Str_Replace() (ricerca (inclusa la distinzione tra maiuscole e minuscole e sulla destra) e sostituzione delle sottostringhe delimitatore).

Str_Piece() (un pezzo di stringa tra le occorrenze specificate del delimitatore (sinistra o destra)).

Str_ReplacePiece() (sostituzione nella stringa sorgente "piece" con la stringa specificata).

Str_VArray() (tra le occorrenze specificate del delimitatore (anche a destra e senza maiuscole e minuscole).

Str_MoveBySyllables() (diviso in sottostringhe "Hard", con un trattino).

Str_MoveWords() (diviso in sottostringhe "Softly")

Str_Cut() ("Taglia" in sottostringhe di lunghezze specificate)

Str_Short() (sostituisci il gruppo a sinistra di caratteri "ridotti" con una "stringa sostitutiva"

Str_Short() (sostituisci il gruppo corretto di caratteri "ridotti" con una "stringa sostitutiva"

Str_Short() (sostituisci nel mezzo di un gruppo di caratteri "ridotti" con una "stringa sostitutiva"

Str_Expand (espansione alla lunghezza specificata aumentando il numero di caratteri specificati)

1.3. Metodi dettagliati (3). "Preparazione" di una riga con trasferimento in una tabella con informazioni dettagliate.

Str_inTableIn() (alla tabella secondo il sistema di separatori nidificati).

Str_inTableGroup (alla tabella in base al filtro multilivello).

Str_inTableNumbers (in una tabella con numeri e frammenti tra di loro).

PARTE 2. METODI-ALGORIMI GENERALIZZATI (3).

Str_Entry() (metodi "Trova" e "Sostituisci").

Str_Fragments() (metodi “Piece”, “ReplacePiece”, “ToArray”, “ToTableIn”).

Str_Short() (metodi "Short", "ShortP", "Short", "Expand".

Str_Split() (metodi "Sposta per sillabe", "Sposta per parole", "Taglia").

PARTE 3. FUNZIONE UNIVERSALE.

È una sorta di interfaccia di programmazione condizionale che consente

applicare diversi metodi a una stringa contemporaneamente. Implementato come

funzioni con sette parametri ("Demo" si basa su questa funzione):

Str_(Metodi, Sottometodi, Input, Param1, Param2, Length_Position_Number, AdditionalOutput)

Opzioni:

- "Metodi" - diversi metodi "combinati" e (o) un metodo "esclusivo".

(codici o nomi a carattere singolo, possibili tramite ",")

- "Sottometodi" - diverse opzioni "combinabili" e (o) "esclusive".

metodo “esclusivo” (codici o nomi a carattere singolo);

- "Input" - Stringa, o Array o Tabella di valori;

- "Param1" - stringa di ricerca, sostituzioni, delimitatori, filtri;

- "Param2" - stringa o simboli sostitutivi;

- “Length_Number_Position” -Numero, Numeri attraverso un separatore o un array con Numeri;

- "Esci" - Numero o stringa o matrice o tabella di valori;

Nomi e (o) codici di un carattere di metodi-sottometodi, nonché numeri in

(Length_Position_Number) può essere comunque separato

uno dei seguenti delimitatori: ”, :;”.

PARTE 4. ALCUNI ESEMPI.

HaveNumbersINString=(Str_FindNumbers(InString)<>Non definito);

HaveDigitsINString=(Str_FindGr(InString,"+0123456789")>0);

ThereLatin=(Str_FindGr(VxStr, Str_Interpret("lL"))>0);

HaveSpecifiedSigns=(Str_NfindGr(VxStr, "+ a cornoYu.0p9")>0);

IsUnprintable=(Str_FindGr(VxStr, Str_Interpret("-l-L-r-R-P-Z-C"))>0);

PARTE 5. CONCLUSIONE.

Ove possibile, gestito con un solo passaggio lungo la linea. Il secondo passaggio - di solito già in frammenti. Non ha utilizzato la funzione incorporata StrNumberOccurrences().

Funzioni integrate utilizzate: Left(),Right()Mid(),StrLength()

- (posizionare e recuperare parte di una stringa dovrebbe essere "veloce").

String è uno dei tipi di dati primitivi nei sistemi 1C:Enterprise 8. Variabili con tipo linea contenere testo.

Digitare i valori delle variabili linea sono racchiusi tra doppi apici. È possibile aggiungere diverse variabili di questo tipo.

Per1 = "Parola 1" ;
Per2 = "Parola 2" ;
Per3 = Per1 + " " + Per2 ;

Infine Per3 conterà" Parola 1 Parola 2″.

Inoltre, i sistemi 1C:Enterprise 8 forniscono funzioni per lavorare con le stringhe. Considera i principali:

InvioStringa(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — la funzione ha lo scopo di visualizzare una finestra di dialogo in cui l'utente può specificare un valore variabile di tipo Linea. Parametro <Строка> è obbligatorio e contiene il nome della variabile in cui verrà scritta la stringa immessa. Parametro <Подсказка> facoltativo è il titolo della finestra di dialogo. Parametro <Длина> facoltativo, indica la lunghezza massima della stringa di input. Il valore predefinito è zero, che significa lunghezza illimitata. Parametro <Многострочность> opzionale. Specifica la modalità di immissione del testo su più righe: True: immissione di testo su più righe con separatori di riga; Falso: inserisci una stringa semplice.

Si può inserire una stringa e, conoscendo il codice carattere in Unicode:

Simbolo(<КодСимвола>) — Il codice viene inserito come numero.

Lettera= Simbolo(1103 ); // IO

C'è anche una funzione inversa che ti permette di scoprire il codice di un carattere.

SimboloCodice(<Строка>, <НомерСимвола>) — Restituisce il numero Unicode del carattere specificato come numero.

Funzioni di conversione maiuscole e minuscole:

VReg(<Строка>) - Converte tutti i caratteri in una stringa in maiuscolo.

HReg(<Строка>) - Converte tutti i caratteri in una stringa in minuscolo.

TReg(<Строка>) - converte tutti i caratteri della stringa in maiuscole e minuscole. Cioè, le prime lettere di tutte le parole vengono convertite in maiuscolo e le restanti lettere vengono convertite in minuscolo.

Funzioni per la ricerca e la sostituzione di caratteri in una stringa:

Trovare(<Строка>, <ПодстрокаПоиска>) - trova il numero di carattere dell'occorrenza della sottostringa di ricerca. Per esempio:

Trova ("Stringa" , "occhio" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — trova il numero del carattere dell'occorrenza della sottostringa di ricerca, il numero dell'occorrenza è specificato nel parametro corrispondente. In questo caso la ricerca parte dal carattere il cui numero è specificato nel parametro Posizione di partenza. La ricerca è possibile dall'inizio o dalla fine della stringa. Per esempio:

Voce Numero4= StrFind( "Difensiva", "o" , Direzione di ricerca. Primo, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Trova tutte le occorrenze della sottostringa di ricerca nella stringa di origine e la sostituisce con la sottostringa di sostituzione.

StrReplace("Stringa", "occhio", "" ); // Pagina

Riga vuota(<Строка>) - controlla la stringa per i caratteri significativi. Se non sono presenti caratteri significativi o non sono presenti caratteri, viene restituito il valore VERO. Altrimenti - Menzogna.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – calcola il numero di occorrenze della sottostringa di ricerca nella stringa sorgente.

StrNumberOccurrences ( "Studia, studia e ancora studia", "studio" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — sostituisce i parametri nella stringa con un numero. La stringa deve contenere marcatori di sostituzione nel formato: "%1..%N". La numerazione dei marker parte da 1. Se il valore del parametro Non definito, la stringa vuota viene sostituita.

StrPattern ( "Opzione 1 = %1, Opzione 2 = %2", "1" , "2" ) ; // Parametro 1= 1, Parametro 2 = 2

Funzioni di conversione di stringhe:

Un leone(<Строка>, <ЧислоСимволов>) restituisce i primi caratteri della stringa.

Giusto(<Строка>, <ЧислоСимволов>) - restituisce gli ultimi caratteri della stringa.

Mercoledì(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - restituisce una stringa di lunghezza<ЧислоСимволов>, a partire da un carattere<НачальныйНомер>.

Abbr(<Строка>) tronca i caratteri non significativi a sinistra del primo carattere significativo nella stringa.

abbr(<Строка>) - taglia i caratteri non significativi a destra dell'ultimo carattere significativo nella stringa.

Abrl(<Строка>) - taglia i caratteri non significativi a sinistra del primo carattere significativo della stringa ea destra dell'ultimo carattere significativo della stringa.

StrGetString(<Строка>, <НомерСтроки>) – ottiene la stringa di una stringa multilinea per numero.

Altre caratteristiche:

StrLunghezza(<Строка>) - restituisce il numero di caratteri in una stringa.

StrNumero di righe(<Строка>) - restituisce il numero di righe in una stringa multilinea. Una riga è considerata nuova se è separata dalla riga precedente da un carattere di nuova riga.

StrCompare(<Строка1>, <Строка2> ) - confronta due stringhe senza distinzione tra maiuscole e minuscole. La funzione funziona come un oggetto Confronto dei valori. Ritorna:

  • 1 - se la prima riga è maggiore della seconda
  • -1 - se la seconda riga è maggiore della prima
  • 0 - se le stringhe sono uguali

StrCompare("Prima riga" , "Seconda riga" ); // 1

Le stringhe in 1C 8.3 nel linguaggio integrato 1c sono valori di tipo primitivo Linea. I valori di questo tipo contengono una stringa Unicode di lunghezza arbitraria. Le variabili di tipo stringa sono un insieme di caratteri racchiuso tra virgolette.

Esempio 1. Creiamo una variabile stringa con testo.

StringVariable = "Ciao mondo!";

Funzioni per lavorare con stringhe in 1s 8.3

In questa sezione verranno fornite le principali funzioni che consentono di modificare le linee in 1s, o di analizzare le informazioni in esse contenute.

StrLunghezza

StrLunghezza(<Строка>) . Restituisce il numero di caratteri contenuti nella stringa passata nel parametro.

Esempio 2. Contiamo il numero di caratteri nella stringa "Ciao mondo!".

String = "Ciao mondo!"; Numero di caratteri = StrLength(String); Rapporto (numero di caratteri);

Il risultato dell'esecuzione di questo codice visualizzerà il numero di caratteri nella stringa: 11.

Abbreviato

Abbr(<Строка>) . Taglia i caratteri non significativi a sinistra del primo carattere significativo in una stringa.
Personaggi insignificanti:

  • spazio;
  • spazio non infrangibile;
  • tabulazione;
  • ritorno a capo;
  • traduzione in linea;
  • traduzione del modulo (pagina).

Esempio 3. Rimuovi tutti gli spazi dal lato sinistro della stringa "peace!" e aggiungi la stringa "Ciao".

String = abbr("mondo!"); Stringa = "Ciao"+Stringa; Notifica(Stringa);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "Hello world!".

Abbreviazione

abbr(<Строка>) . Taglia i caratteri non significativi a destra del primo carattere significativo in una stringa.

Esempio 4. Modulo dalle stringhe "Hello" e "world!" frase "Ciao mondo!"

Stringa = abbr("Ciao")+" "+abbr("mondo!"); Notifica(Stringa);

LP abbreviato

Abrl(<Строка>) . Taglia i caratteri non significativi a destra del primo carattere significativo nella stringa, taglia anche i caratteri non significativi a sinistra del primo carattere significativo nella stringa. Questa funzione viene utilizzata più spesso delle due precedenti, in quanto è più versatile.

Esempio 5. Rimuovere i caratteri non significativi a sinistra ea destra nel nome della controparte.

Appaltatore = Directories.Contractors.FindBy Details("TIN", "0777121211"); ContractorObject = Contractor.GetObject(); ContractorObject.Description = Abbreviato LP(ContractorObject.Description); ContractorObject.Write();

un leone

Un leone(<Строка>, <ЧислоСимволов>) . Ottiene i primi caratteri di una stringa, il numero di caratteri è specificato nel parametro Numero di caratteri.

Esempio 6. Let la struttura Dipendente contenere il nome, cognome e patronimico del dipendente. Ottieni una stringa con cognome e iniziali.

InitialName = Lion(Dipendente.Nome, 1); Iniziale patronimico = Leone(Dipendente.Patronimico, 1); FullName = Employee.LastName + " " + FirstName Initial + "." + Iniziale patronimico + ".";

Diritti

Giusto(<Строка>, <ЧислоСимволов>) . Ottiene gli ultimi caratteri di una stringa, il numero di caratteri è specificato nel parametro Numero di caratteri. Se il numero di caratteri specificato supera la lunghezza della stringa, viene restituita l'intera stringa.

Esempio 7. Lascia che una data sia scritta alla fine di una variabile stringa nel formato "aaaammgg", ottieni una stringa con una data e convertila in tipo data.

Stringa = " La data corrente: 20170910"; StringDate = Diritti(String, 8); Data = Date(StringDate);

Mercoledì

Mercoledì(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Ottiene una sottostringa dalla stringa passata nel parametro Linea, a partire dal carattere il cui numero è specificato nel parametro Numero iniziale e la lunghezza passata al parametro Numero di caratteri. La numerazione dei caratteri in una stringa parte da 1. Se il parametro Numero iniziale viene specificato un valore minore o uguale a zero, il parametro assume il valore 1. Se il parametro Numero di caratteri non è specificato, vengono selezionati i caratteri fino alla fine della stringa.

Esempio 8. Lascia che la variabile stringa contenga il codice della regione a partire dalla nona posizione, dovresti ottenerlo e scriverlo in una riga separata.

String = "Regione: 99 Mosca"; Regione = Avg(Riga, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Cerca la sottostringa specificata in una stringa, restituisce il numero di posizione del primo carattere della sottostringa trovata. Considera i parametri di questa funzione:

  • Linea. Stringa sorgente;
  • Ricerca sottostringa. La sottostringa desiderata;
  • DirezioneCerca. Specifica la direzione in cui cercare una sottostringa in una stringa. Può assumere valori:
    • Direzione di ricerca. Dall'inizio;
    • Direzione di ricerca.Dalla fine;
  • Posizione di partenza. Specifica la posizione nella stringa da cui iniziare la ricerca;
  • Numero di ingresso. Specifica il numero di occorrenze della sottostringa cercata nella stringa di origine.

Esempio 9. Nella riga "Ciao mondo!" determinare la posizione dell'ultima occorrenza del carattere "e".

PositionNumber = StrFind("Hello World!", "and", SearchDirection.From End); Notifica(NumeroPosizione);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione del numero dell'ultima occorrenza del simbolo "e" sullo schermo: 9.

VReg

VReg(<Строка>) . Converte tutti i caratteri della stringa specificata in 1s 8 in maiuscolo.

Esempio 10. Converti la stringa "hello world!" in maiuscolo.

StringVreg = Vreg("ciao mondo!"); Report(StringVreg);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "HELLO WORLD!"

HReg

HReg(<Строка>) . Converte tutti i caratteri della stringa specificata in 1s 8 in minuscolo.

Esempio 11. Converti la stringa "HELLO WORLD!" in minuscolo.

StringNreg = NReg("CIAO MONDO!"); Report(StringVreg);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "hello world!"

TReg

TReg(<Строка>) . Converte una stringa come segue: il primo carattere di ogni parola viene convertito in maiuscolo, i restanti caratteri della parola vengono convertiti in minuscolo.

Esempio 12. Scrivi in ​​maiuscolo le prime lettere delle parole nella stringa "hello world!".

StringTreg = TReg("ciao mondo!"); Report(StringTreg);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "Hello World!"

Simbolo

Simbolo(<КодСимвола>) . Ottiene un carattere in base al relativo codice Unicode.

Esempio 13. Aggiungi sinistra e destra alla riga "Hello World!" simbolo ★

StringWithStars = Carattere("9733")+"Ciao mondo!"+Carattere("9733"); Report(StringWithStars);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "★Hello World!★"

SimboloCodice

SimboloCodice(<Строка>, <НомерСимвола>) . Ottiene il codice carattere Unicode dalla stringa specificata nel primo parametro, situata nella posizione specificata nel secondo parametro.

Esempio 14. Scopri il codice dell'ultimo carattere nella stringa "Hello World!".

String = "Ciao mondo!"; CharacterCode =CharacterCode(String, StrLength(String)); Notifica(CodiceCarattere);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione del codice del simbolo "!" — 33.

Linea vuota

Riga vuota(<Строка>) . Controlla se la stringa è composta solo da caratteri non significativi, ovvero se è vuota.

Esempio 15. Controlla se la stringa è vuota e consiste di tre spazi.

Vuoto = StringaVuota(" "); Rapporto (vuoto);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della parola "Sì" (espressione stringa di un valore booleano VERO).

StrReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Trova tutte le occorrenze della sottostringa di ricerca nella stringa di origine e la sostituisce con la sottostringa di sostituzione.

Esempio 16. Nella riga "Hello World!" sostituire la parola "Mondo" con la parola "Amici".

String = StrReplace("Ciao Mondo!", "Mondo", "Amici"); Notifica(Stringa);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della stringa "Hello Friends!"

StrNumeroRighe

StrNumero di righe(<Строка>) . Consente di contare il numero di righe in una stringa multilinea. Per passare a nuova linea in 1s 8 viene utilizzato il simbolo PS(carattere di avanzamento riga).

Esempio 17. Determina il numero di righe nel testo:
"Prima linea
Seconda linea
Terza linea"

Number = StrNumero di righe("Prima riga"+Simboli.PS +"Seconda riga"+Simboli.PS +"Terza riga"); Rapporto(Numero);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione del numero di righe nel testo: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Ottiene una stringa in una stringa multilinea in base al relativo numero. La numerazione delle righe parte da 1.

Esempio 18. Ottieni l'ultima riga nel testo:
"Prima linea
Seconda linea
Terza linea"

Testo = "Prima riga"+Caratteri.PS +"Seconda riga"+Caratteri.PS +"Terza riga"; LastLine = StrGetLine(Testo, StrNumero di righe(Testo)); Notifica (ultima riga);

Il risultato dell'esecuzione di questo codice sarà la visualizzazione della riga "Terza riga".

StrNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Restituisce il numero di occorrenze della sottostringa specificata in una stringa. La funzione fa distinzione tra maiuscole e minuscole.

Esempio 19. Determina quante volte la lettera "c" entra nella riga "Linee in 1s 8.3 e 8.2", indipendentemente dal caso.

String = "Righe in 1s 8.3 e 8.2"; Numero di occorrenze = StrNumero di occorrenze(Vreg(String), "C"); report(numero di occorrenze);

Il risultato dell'esecuzione di questo codice visualizzerà il numero di occorrenze sullo schermo: 2.

La pagina inizia da

StrIniziaDa(<Строка>, <СтрокаПоиска>) . Controlla se la stringa fornita nel primo parametro inizia con la stringa nel secondo parametro.

Esempio 20. Determina se il TIN della controparte selezionata inizia con il numero 1. Lascia la variabile controparte Controparti.

TIN = Appaltatore.TIN; StartsCUnits = StrStartsC(TIN, "1"); If StartsFROM1 Then //Il tuo codice EndIf;

La pagina finisce il

StrEndsOn(<Строка>, <СтрокаПоиска>) . Controlla se la stringa passata nel primo parametro termina con la stringa nel secondo parametro.

Esempio 21. Determina se il TIN della controparte selezionata termina con il numero 2. Lascia la variabile controparte viene memorizzato il collegamento all'elemento directory Controparti.

TIN = Appaltatore.TIN; Termina con due = Str termina con (TIN, "2"); If Ends With Two Then //Il tuo codice EndIf;

Divisione pagine

StrDividi(<Строка>, <Разделитель>, <ВключатьПустые>) . Divide una stringa in parti in base ai caratteri delimitatori specificati e scrive le stringhe risultanti in una matrice. Il primo parametro memorizza la stringa originale, il secondo parametro contiene la stringa contenente il delimitatore, il terzo parametro indica se le stringhe vuote devono essere scritte nell'array (per impostazione predefinita VERO).

Esempio 22. Supponiamo di avere una stringa contenente numeri separati dal simbolo ";", ottenere un array di numeri dalla stringa.

Stringa = "1; 2; 3"; Array = StrSplit(Stringa, ";"); For Count = 0 By Array.Quantity() - 1 tentativo di ciclo Array[Count] = Number(Ablp(Array[Count])); Eccezione Array[W] = 0; EndTry EndCycle;

Come risultato dell'esecuzione, si otterrà un array con numeri da 1 a 3.

StrConnect

StrConnect(<Строки>, <Разделитель>) . Converte una matrice di stringhe dal primo parametro in una stringa contenente tutti gli elementi della matrice utilizzando il delimitatore specificato nel secondo parametro.

Esempio 23. Usando l'array di numeri dell'esempio precedente, ottieni la stringa originale.

For Count = 0 By Array.Quantity() - 1 Loop Array[Count] = String(Array[Count]); Fine Ciclo; Stringa = StrConnect(Array, "; ");