Maison / Tutoriels Windows / 1c comment supprimer les espaces supplémentaires à l'intérieur d'une chaîne. Comparer des chaînes entre elles

1c comment supprimer les espaces supplémentaires à l'intérieur d'une chaîne. Comparer des chaînes entre elles

FAQ ou plateforme 8 pour les nuls.

À en juger par les forums dédiés à 1C, les programmeurs qui ont rencontré pour la première fois la plate-forme 1C v 8 ou la transition de 7.7 ont souvent les mêmes questions. Ici, j'ai décidé de collecter les plus courants, à mon avis ...

DANS: Comment supprimer un espace dans le nombre 12 600,00 ?
À PROPOS DE: Il est important de comprendre que ce n'est pas le caractère d'espace qui est utilisé ici, mais le soi-disant "espace insécable", donc, par exemple, la construction suivante :

StrReplace(VariableNumber," ","");

ne fonctionnera pas. Il existe deux options pour résoudre le problème, soit spécifier Symbols.NPP pour le remplacement au lieu d'un espace, soit utiliser la fonction Format ().

StrReplace(VariableNumber, Symbols.NPP,""); // 1ère possibilité
Format(NombreVariable,"CH="); // 2e possibilité

DANS: Comment définir une condition dans une requête de manière à ce que seuls les documents d'un certain type soient inclus dans la sélection résultante ?
À PROPOS DE: Cela peut être fait en utilisant l'opérateur de langage de requête REFERENCE, qui vous permet de vérifier si la valeur de l'expression spécifiée à sa gauche est une référence à la table spécifiée à sa droite. Prenons un exemple, sélectionnez dans le registre d'accumulation Réalisation de services uniquement les enregistrements pour lesquels le registraire est le document Réalisation de biens et services :

Requête=Nouvelle requête("
| CHOISIR
| Mise en œuvre des services.
| Mise en œuvre des services Montant
| DEPUIS
| Registre d'accumulation Mise en œuvre des services AS Mise en œuvre des services
| OÙ
| Registraire LINK Document. Ventes de biens et services");

DANS: Comment transférer certains documents/répertoires entre configurations identiques ?
À PROPOS DE: Cela peut être fait avec traitement typique UploadUploadDataXML.epf fourni sur les disques ITS.

DANS: Comment transférer des données entre différentes configurations (ou de 7.7 à 8) ?
À PROPOS DE: La meilleure option, à mon avis, est l'utilisation de la configuration typique "Conversion de données", qui est fournie sur les disques ITS, il existe également plusieurs articles décrivant l'utilisation de cette configuration.

DANS: Comment ajouter une certaine chaîne à un champ de type non-chaîne dans une requête, par exemple, SELECT Réalisation de biens de services. Montant + "frotter." ?
À PROPOS DE: Certainement pas. La conversion de type n'est pas possible dans une requête. La construction du langage de requête EXPRESS est trompeuse pour certains, mais elle convertit uniquement une valeur d'un type composite en l'un des types de composants de cette valeur et ne convertit en aucun cas le type, elle n'est donc pas applicable dans cette situation.

DANS: Comment définir une condition dans une requête sur un champ avec le type chaîne de longueur illimitée, par exemple, sélectionner tous les documents avec un certain commentaire ?
À PROPOS DE: Pour cela, vous devez limiter la longueur du champ à l'aide de l'opérateur du langage de requête EXPRESS. Par exemple:

Requête=Nouvelle requête("
| CHOISIR
| Réalisation de Biens et Services Lien
| DEPUIS
| Document.Vente de biens/services COMMENT Réalisation des biens/services
| OÙ
| EXPRESS(ImplementationProductsServices.Comment AS STRING(100)) = &Comment");

DANS: Existe-t-il un analogue de la fonction 7.7 CatalogIB() dans v 8 ?
À PROPOS DE: Non, car une telle fonction n'aurait pas de sens pour un mode de fonctionnement client-serveur. Cependant, pour le mode de fonctionnement fichier, vous pouvez obtenir le répertoire base d'informations avec la construction suivante :

DirectoryIB=NSstr(InfobaseConnectionString(),"Fichier");

DANS: Comment déconnecter un nœud d'une infobase distribuée ?
À PROPOS DE: Avec la construction suivante :

Plans d'échange.SetMainNode(Undefined);

Ou lancez le configurateur avec le paramètre ligne de commande/ResetMasterNode (pour versions de base non utilisé).

DANS: Comment obtenir le nom du document (analogue à la méthode 7.7 View()) ?
À PROPOS DE: A l'aide de métadonnées. Par exemple:

DANS: Comment sélectionner des documents de toutes sortes avec une seule requête ?
À PROPOS DE: Utilisation des métadonnées et possibilité de combiner des requêtes DANS:

Requête=Nouvelle requête ;
Texte="" ;
Pour chaque document de la boucle Metadata.Documents
Text=Text+"CHOOSE Link FROM Document."+Document.Name+"JOIN" ;
FinCycle ;
Query.Text=Lev(Text, StrLength(Text)-StrLength(" UNITE "));
Sélection=Query.Execute().Select();

DANS: Comment interrompre l'exécution d'un état/traitement ?
À PROPOS DE: Avec l'opérateur UserInterruptHandle(), il est recommandé de l'utiliser à l'intérieur des boucles. Lorsque l'utilisateur appuie sur la combinaison de touches Ctrl+Pause, l'exécution est interrompue et un message correspondant s'affiche. Par exemple:

Pendant que la boucle Selection.Next()
HandlingUserInterrupt();

FinCycle ;

DANS: Le formulaire a un TableField avec le type ValueTree et la propriété Tree définie. Pourquoi l'arbre des valeurs n'est-il pas affiché ?
À PROPOS DE: Il est également nécessaire de définir la propriété DisplayHierarchy pour l'une des colonnes.

DANS: Comment utiliser les tâches planifiées dans mode fichier le travail de l'infobase?
À PROPOS DE: Contrairement au client-serveur, en mode fichier, la responsabilité de la mise en œuvre du démarrage automatique tâches routinières est à la charge du développeur. Pour implémenter le démarrage automatique des travaux, vous avez besoin d'un gestionnaire d'attente qui vérifie périodiquement les travaux "en retard" et les démarre. Il est fortement recommandé d'utiliser une session séparée pour cela. Exemple:

Procédure de vérification de tâche()
ExecuteProcessingJobs();
FinProcédure
ConnectWaitingHandler("CheckingTasks",3);

DANS: Comment obtenir un tableau à partir d'une chaîne délimitée ?
À PROPOS DE: A titre d'exemple, je vais donner ma version d'une fonction qui fonctionne "dans les deux sens", c'est-à-dire lors du passage d'une chaîne délimitée, il forme un tableau, et lors du passage d'un tableau, il en forme une chaîne délimitée.

Fonction StringArray(Valeur Valeur, Séparateur)
Si TypeValeur(Valeur)=Type("Chaîne") Alors
MnStr=StrReplace(Valeur, Séparateur, Symboles.PS);
Tableau=Nouveau tableau ;
For n=1 By StrNumber of Rows (MnStr) Cycle
Array.Add(StrGetString(MnStr,n));
FinCycle ;
Tableau de retour ;
SinonSi TypeValeur(Valeur)=Type("Tableau") Alors
Chaîne="" ;
Pour chaque élément de la boucle de valeur
Chaîne=Chaîne+?(Chaîne"",Séparateur,"")+Élément ;
FinCycle ;
Chaîne de retour ;
Sinon
Retour Non défini ;
Fin si;
EndFunctions

DANS: Comment activer la possibilité d'effectuer des modifications dans le configurateur dans une configuration typique ?
À PROPOS DE:Étant donné que les configurations typiques sont prises en charge (ce qui vous permet de mode automatique mise à jour), alors par défaut, la possibilité d'apporter des modifications à la configuration est désactivée. Pour activer cette fonctionnalité, sélectionnez l'élément de menu "Configuration > Assistance > Paramètres d'assistance" dans le configurateur et cliquez sur le bouton "Activer la possibilité de modifier" dans la fenêtre qui s'ouvre.

DANS: Comment définir un mot de passe pour le traitement/configuration ?
À PROPOS DE: Dans 1C v 8, les mots de passe ne peuvent être définis que sur les modules d'objet. Pour définir un mot de passe, vous devez ouvrir le module objet et sélectionner l'élément de menu "Texte > Définir le mot de passe". Il est également possible de livrer la configuration sans le code source des modules objets (configuration "Configuration > Livraison de la configuration > Paramètres de livraison"). Je voudrais noter que sur ce moment, aucune de ces méthodes n'est une protection fiable contre l'affichage du code source du module.

DANS: Pourquoi la recherche d'un document ne fonctionne-t-elle pas avec FindByNumber(<Номер документа>)?
À PROPOS DE: Il faut se rappeler que si une numérotation périodique est définie pour ce type de documents dans le configurateur, en plus du numéro de document, il est nécessaire d'indiquer la date de l'intervalle comme deuxième paramètre. Sinon, un document avec une date vide sera recherché, ce qui ne conduira évidemment pas au résultat souhaité.

DANS: Dans 1C 8.1, si nécessaire, connectez-vous déjà application en cours d'exécution pour le débogage (Configurateur > Débogage > Connexion) dans les éléments de débogage disponibles est vide. Quelle est la raison?
À PROPOS DE: Le fait est que pour l'application que nous allons déboguer, vous devez activer explicitement le débogage. Menu Outils > Options > onglet Système > indicateur de débogage activé.

DANS: Comment organiser l'itération des lignes liste dynamique(par exemple, DirectoryList ou DocumentList) ?
À PROPOS DE: Cela peut être fait à l'aide de l'outil de création de rapports, par exemple :

Builder=Nouveau générateur de rapport ;
Builder.DataSource=NewDataSourceDescription(DocumentList);
Selection=Builder.Result.Select();
Pendant que la boucle Selection.Next()
Rapport(Sélection. Lien);
FinCycle ;

Remarque : la sélection comprendra des lignes conformément à la sélection actuellement définie.

DANS: Comment vérifier les valeurs de propriété des objets de métadonnées ? Par exemple, le type de hiérarchie des répertoires ou le mode de saisie du registre, ou la fréquence du numéro de document ?
À PROPOS DE: Toutes ces propriétés sont des propriétés énumérées d'objets de métadonnées. Vous pouvez également obtenir des valeurs de ce type via les métadonnées. Exemples:

// Exemple 1. Affichage de la hiérarchie de recherche
Si Metadata.Catalogs[CatalogName].HierarchyView = Metadata.ObjectProperties.HierarchyView.HierarchyGroupsAndItems Alors...
// Exemple 2. RegisterWriteMode
Si Metadata.InformationRegisters[RegisterName].RegisterWriteMode = Metadata.ObjectProperties.RegisterWriteMode.RegisterSubordinate Alors...
// Exemple 3. Numéro de document périodique
Si Metadata.Documents[DocumentName].Number Periodicity = Metadata.ObjectProperties.DocumentNumber Periodicity.Non-Periodic Alors...

DANS: Comment implémenter une case à cocher à trois états dans l'arbre des valeurs ?
À PROPOS DE: Considérons l'énoncé du problème plus en détail. Le formulaire comporte un champ table dont la source de données est une arborescence de valeurs. L'une des colonnes contient un contrôle de case à cocher. Il faut qu'il puisse prendre trois états "On", "Off" et "Undefined". Dans ce cas, l'état est "Indéfini" ou le soi-disant "drapeau gris", c'est-à-dire partiellement sélectionné, défini si toutes les lignes subordonnées n'ont pas le même état d'indicateur. De plus, si une ligne a des lignes subordonnées, lorsque son indicateur est modifié, les indicateurs de toutes les lignes subordonnées doivent être modifiés en conséquence.
Commençons par ajouter notre colonne de cases à cocher à l'arborescence des valeurs :

Tree.Columns.Add("Mark",NewTypeDescription("Number"));
FormElements.Tree.CreateColumns();
TreeColumns=FormElements.Tree.Columns ;
TreeColumns.Mark.FlagData="Marquer" ;
TreeColumns.Mark.SetControlItem(Type("Case à cocher"));
TreeColumns.Mark.EditMode=EditModeColumns.Immediate
enno;
TreeColumns.Tag.ThreeFlagStates=Vrai ;

Deuxièmement, lors du changement d'indicateur, vous devez définir les valeurs appropriées dans les lignes subordonnées et contrôler la valeur de l'indicateur dans la "ligne parente":

Procédure TreeOnChangement d'un indicateur (élément, colonne)
CurrentRow=Élément.CurrentRow ;
Si CurrentLine.Mark=2 Alors
CurrentLine.Mark=0 ;
Fin si;
SettingFlags(CurrentRow,CurrentRow.Mark);
Tandis que la boucle CurrentRow.ParentUndefined
CurrentRow.Parent.Label=?(SetForAll(CurrentRow),CurrentRow.Label,2);
CurrentRow=CurrentRow.Parent ;
FinCycle ;
FinProcédure

Ici, la procédure SetFlags() positionne récursivement les drapeaux dans les sous-lignes :

Procédure SetFlags(CurrentRow,Value)
Pour chaque page de la boucle CurrentRow.Rows
PageMark=Valeur ;
SetFlags(Pg,Pg.Mark);
FinCycle ;
FinProcédure

Et la fonction InstalledForAll() vérifie si le même valeur pour toutes les lignes au niveau actuel :

Fonction SetForAll(String)
Pour chaque page de la boucle Row.Parent.Row
Si Page.MarkString.Mark Alors
retourner faux ;
Fin si;
FinCycle ;
retourner vrai ;
EndFunctions

DANS: Comment implémenter le tri par attribut sous forme de liste ?
À PROPOS DE: Si l'attribut est de type primitif, il suffit de définir la propriété de l'attribut "Index" sur "Index" ou "Index avec tri » (non disponible pour les attributs de type ValueStorage). Si l'attribut est de type référence, il est alors nécessaire d'activer explicitement le tri pour celui-ci. Par exemple:

ElementUE=Formulaire Elements.DirectoryList.Order Settings.Find("Attribute1");
Si ElementUE est indéfini alors
ItemUE.Availability=true ;
Fin si;

Il arrive souvent que lors du chargement et du déchargement des données de 1C 8.2 et 8.3, il y ait des espaces dans les chiffres qui empêchent le traitement normal des données. La solution à ce problème est très simple.

Considérez quels types d'écarts sont.

Les espaces peuvent être de deux types :

  • Espace non-cassant;
  • espace "régulier".

Suppression des espaces insécables

StringRepresentation = String(Number); // le système écrira dans la variable "10 000"

La suppression de ces espaces dans 1C est très simple grâce à la fonction de format de nombre :

Nombre = Format(10000, "CH=");

StringRepresentation = String(Number); // le système écrira dans la variable "10000"

Nous avons défini le groupement sur formater la chaîne Valeur vide (vous pouvez aussi écrire "0").

Si le type de données est déjà "chaîne", alors la méthode suivante peut être utilisée :

StringRepresentation = StrReplace(String(StringRepresentation), Characters.NPP, ""); // la variable StringRepresentation était "10 000", est devenue "10000"

Autrement dit, nous avons simplement remplacé l'espace insécable (Symbols.NPP) dans la chaîne par une valeur vide.

Places régulières

Supprimer un espace régulier dans une chaîne est aussi simple que d'égrener des poires. Il suffit d'exécuter la fonction suivante :

StringRepresentation = StrReplace(String(StringRepresentation), " ", ""); // "10 000" est devenu "10 000"

L'exemple est similaire méthode précédente. Cependant, au lieu de Symbols.npp, nous utilisons une chaîne à espace unique.

Si vous commencez à apprendre la programmation 1C, nous vous recommandons notre cours gratuit(N'oubliez pas abonnez-vous à youtube - De nouvelles vidéos sont publiées régulièrement.

Le type String se trouve dans tous les langages de programmation. C'est primitif et dans 1C, il existe de nombreuses fonctions pour travailler avec. Dans cet article, nous allons regarder de plus près différentes manières travailler avec des types de chaîne dans 1C 8.3 et 8.2 avec des exemples.

Doubler

Pour convertir une variable de n'importe quel type en chaîne, il existe la fonction "String()" du même nom. Le paramètre d'entrée sera la variable elle-même, dont la représentation sous forme de chaîne doit être obtenue.

Chaîne(Faux) // renvoie "Non"
Chaîne(12345) // renvoie "12 345"
Chaîne(DateActuelle()) //"21.07.2017 11:55:36"

Il est possible de convertir en chaîne non seulement des types primitifs, mais aussi d'autres, par exemple, des éléments de répertoires et de documents.

LP abrégé, L abrégé, P abrégé

Les paramètres d'entrée de ces fonctions sont une variable de type chaîne. Les fonctions suppriment les caractères non significatifs (espaces, retours chariot, etc.) : des côtés gauche et droit, uniquement du côté gauche et uniquement du côté droit, respectivement.

abbrl("Les espaces des deux côtés seront supprimés") // "Les espaces des deux côtés seront supprimés"
abbr("Les espaces des deux côtés seront supprimés") // "Les espaces à gauche seront supprimés"
abbr(" Les espaces des deux côtés seront supprimés ") // "Les espaces à droite seront supprimés"

Lion, droite, milieu

Ces fonctions vous permettent de couper une partie d'une chaîne. La fonction Lion() renverra la partie de la chaîne sur son côté gauche de la longueur spécifiée. La fonction "Right()" est similaire, mais le recadrage se fait à droite. La fonction "Mer()" permet de spécifier le numéro de caractère à partir duquel la chaîne sera sélectionnée et sa longueur.

Lion("Variable chaîne", 4) // renvoie "Stro"
Droite("Variable chaîne", 7) // renvoie "variable"
avg("String variable", 2, 5)// retourne "troco"

LongueurStr

La fonction détermine le nombre de caractères contenus dans une variable de chaîne.

StrLength("Word") // le résultat de l'exécution sera le nombre 5

Trouver

La fonction permet de rechercher une partie d'une chaîne dans une variable chaîne. La valeur de retour sera un nombre indiquant la position du début de la chaîne trouvée. Si aucune correspondance n'est trouvée, zéro est renvoyé.

Notez que la recherche est sensible à la casse. S'il existe plusieurs occurrences de la sous-chaîne de recherche dans la chaîne d'origine, la fonction renverra le début de la première occurrence.

Find("un, deux, un, deux, trois", "deux") // la fonction renverra le nombre 6

Ligne vide

L'utilisation de cette fonction vous permet de déterminer si une chaîne est vide. Les caractères non significatifs, tels que l'espace, le retour chariot et autres ne sont pas pris en compte.

EmptyString("Vasily Ivanovich Pupkin") // la fonction renverra False
EmptyString(" ") // la fonction renverra True

VReg, NReg, TReg

Ces fonctions sont très utiles lors de la comparaison et de la conversion de variables de chaîne. "Vreg()" renverra la chaîne d'origine en majuscules, "HReg()" en minuscules et "TReg()" la formatera de sorte que le premier caractère de chaque mot individuel soit en majuscule et que tous les caractères suivants soient en minuscules.

VReg(" DIRECTEUR GÉNÉRAL ") // valeur de retour - " DIRECTEUR GÉNÉRAL "
HReg("DIRECTEUR GENERAL") // valeur de retour - "PDG"
TReg("DIRECTEUR GÉNÉRAL") // valeur de retour - "Directeur général"

StrRemplace

Cette fonction est un analogue du remplacement dans éditeurs de texte. Il vous permet de remplacer un caractère ou un ensemble de caractères par un autre dans les variables de chaîne.

StrReplace("rouge, blanc, jaune", ",", ";") // renvoie "rouge ; blanc; jaune"

StrNumberRows

La fonction permet de déterminer le nombre de lignes séparées par un retour chariot dans une variable texte.

La boucle dans l'exemple ci-dessous passera par trois cercles car la fonction StrNumberRows renverra la valeur 3 :

Pour ind \u003d 1 par StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") Boucle
<тело цикла>
FinCycle ;

StrGetString

Cette fonction fonctionne avec du texte multiligne de la même manière que la précédente. Il vous permet d'obtenir une chaîne spécifique à partir d'une variable de texte.

StrGetString("Chaîne1" + Symboles.PS + "Chaîne2" + Symboles.PS + "Chaîne3", 2) // renvoie "Ligne2"

StrNumberOccurrencesStrNumberOccurrences

La fonction compte le nombre d'occurrences d'un caractère ou d'une sous-chaîne dans la chaîne recherchée.

StrNumberInstallations("a;b;c;d; ", ";") // la fonction renverra le nombre 4

Symbole et SymbolCode

Ces fonctions permettent d'obtenir un caractère par son code Unicode, ainsi que de déterminer ce code par le caractère lui-même.

SymbolCode("A") // la fonction renverra le nombre 1 040
SymbolCode(1040) // la fonction renverra "A"

Tâches fréquentes lors de l'utilisation de chaînes

Concaténation de chaînes

Pour concaténer plusieurs chaînes (concaténer), utilisez simplement l'opérateur d'addition.

"Ligne 1" + "Ligne 2" //le résultat de l'ajout de deux lignes sera "Ligne 1 Ligne 2"

Conversion de types

Pour convertir un type en chaîne, par exemple une référence à un élément du dictionnaire, un nombre, etc., il suffit d'utiliser la fonction "String ()". Des fonctions comme "ShortLP()" convertiront également les variables en chaîne, mais immédiatement en coupant les caractères insignifiants.

String(1000) // renverra "1000"

Veuillez noter que lors de la conversion d'un nombre en chaîne, le programme a automatiquement ajouté un espace séparant les milliers. Pour éviter cela, vous pouvez utiliser les structures suivantes :

StrRemplace(Chaîne(1000),Caractères.NPP,"") // renvoie "1000"

String(Format(1000,"CH=")) // renverra "1000"

Citations dans une chaîne

Très souvent, vous devrez faire face à la nécessité de mettre des guillemets dans une variable de chaîne. Il peut s'agir soit d'un texte de requête écrit dans le configurateur, soit simplement d'une variable. Pour résoudre ce problème, il vous suffit de définir deux guillemets.

Header = String("Horns and Hooves LLC c'est nous !") // renvoie "Roga and Hooves LLC c'est nous !"

Multiligne, saut de ligne

Pour créer un texte multiligne, il suffit d'y ajouter des caractères de saut de ligne (Symbols.PS).

MultilineText = "Première ligne" + Caractères.PS + "Deuxième ligne"

Comment supprimer des espaces

Afin de supprimer les espaces à droite ou à gauche, vous pouvez utiliser la fonction "Stretch()" (ainsi que "Scrpt()" et "ScreenP()") :

StringWithoutSpaces = ShortLP(" Many letters ") // la fonction renverra la valeur "Many letters"

Si, après avoir converti un nombre en chaîne, vous devez supprimer espaces insécables, utilisez la construction suivante :

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

De plus, les programmeurs utilisent souvent la construction suivante, qui vous permet de supprimer ou de remplacer tous les espaces d'une variable de texte par un autre caractère :

ChaîneSansEspaces = StrReplace(" bonjour", " " ,"") // renvoie "bonjour"

Comparer des chaînes entre elles

Vous pouvez comparer les termes avec le signe égal habituel. La comparaison est sensible à la casse.

"hello" = "hello" // retournera faux
"Bonjour" = "Bonjour" // renverra Vrai
"Bonjour" = "Au revoir" // renverra Faux

Les chaînes en 1C 8.3 dans le langage intégré 1c sont des valeurs d'un type primitif Doubler. Les valeurs de ce type contiennent une chaîne Unicode de longueur arbitraire. Les variables de type chaîne sont un ensemble de caractères entre guillemets.

Exemple 1. Créons une variable de chaîne avec du texte.

StringVariable = "Bonjour le monde !" ;

Fonctions pour travailler avec des chaînes en 1s 8.3

Cette section fournira les principales fonctions qui vous permettent de changer de ligne en 1s, ou d'analyser les informations qu'elles contiennent.

LongueurStr

LongueurStr(<Строка>) . Renvoie le nombre de caractères contenus dans la chaîne passée en paramètre.

Exemple 2. Comptons le nombre de caractères dans la chaîne "Hello world!".

String = "Bonjour le monde!"; Nombre de caractères = StrLength(String); Rapport (nombre de caractères) ;

Le résultat de l'exécution de ce code affichera le nombre de caractères dans la chaîne : 11.

Abrégé

Abr(<Строка>) . Supprime les caractères non significatifs à gauche du premier caractère significatif d'une chaîne.
Caractères non significatifs :

  • espace;
  • Espace non-cassant;
  • tabulation;
  • retour chariot ;
  • traduction de ligne ;
  • traduction du formulaire (page).

Exemple 3. Supprimez tous les espaces du côté gauche de la chaîne "peace!" et ajoutez-y la chaîne "Bonjour".

String = abbr("monde!"); Chaîne = "Salut"+Chaîne ; notifier(chaîne);

Le résultat de l'exécution de ce code sera l'affichage de la chaîne "Hello world!".

Abréviation

abbr(<Строка>) . Coupe les caractères non significatifs à droite du premier caractère significatif d'une chaîne.

Exemple 4. Form à partir des chaînes "Hello" et "world!" phrase "Bonjour le monde!"

Chaîne = abbr("Salut")+" "+abbr("monde !"); notifier(chaîne);

LP abrégé

abrégé(<Строка>) . Coupe les caractères non significatifs à droite du premier caractère significatif de la chaîne, coupe également les caractères non significatifs à gauche du premier caractère significatif de la chaîne. Cette fonction est utilisée plus souvent que les deux précédentes, car elle est plus polyvalente.

Exemple 5. Supprimer les caractères non significatifs à gauche et à droite du nom de la contrepartie.

Entrepreneur = Directoryes.Entrepreneurs.FindBy Details("TIN", "0777121211"); EntrepreneurObject = Entrepreneur.GetObject(); ContractorObject.Description = LP abrégé (ContractorObject.Description); ContractorObject.Write();

un lion

Un lion(<Строка>, <ЧислоСимволов>) . Obtient les premiers caractères d'une chaîne, le nombre de caractères est spécifié dans le paramètre Nombre de caractères.

Exemple 6. Soit la structure Employé contenir le nom, le prénom et le patronyme de l'employé. Obtenir une chaîne avec le nom de famille et les initiales.

NomInitial = Lion(Employee.Name, 1); Initiale patronymique = Lion(Employee.Patronymic, 1); Nom complet = Employee.LastName + " " + FirstName Initial + "." + Initiale patronymique + "." ;

Droits

Droite(<Строка>, <ЧислоСимволов>) . Obtient les derniers caractères d'une chaîne, le nombre de caractères est spécifié dans le paramètre Nombre de caractères. Si le nombre de caractères spécifié dépasse la longueur de la chaîne, la chaîne entière est renvoyée.

Exemple 7. Laissez une date être écrite à la fin d'une variable de chaîne au format "aaaammjj", obtenez une chaîne avec une date et convertissez-la en type date.

Chaîne = " La date actuelle: 20170910" ; StringDate = Droits(String, 8); Date = Date(StringDate);

Mercredi

Mercredi(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Obtient une sous-chaîne à partir de la chaîne passée en paramètre Doubler, à partir du caractère dont le numéro est spécifié dans le paramètre NuméroInitial et la longueur passée au paramètre Nombre de caractères. La numérotation des caractères d'une chaîne commence à 1. Si le paramètre NuméroInitial une valeur inférieure ou égale à zéro est spécifiée, alors le paramètre prend la valeur 1. Si le paramètre Nombre de caractères n'est pas spécifié, les caractères jusqu'à la fin de la chaîne sont sélectionnés.

Exemple 8. Laissez la variable de chaîne contenir le code de région à partir de la neuvième position, vous devriez l'obtenir et l'écrire sur une ligne séparée.

String = "Région : 99 Moscou" ; Région = Moy(Ligne, 9, 2);

Recherche de page

StrRecherche(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Recherche la sous-chaîne spécifiée dans une chaîne, renvoie le numéro de position du premier caractère de la sous-chaîne trouvée. Considérez les paramètres de cette fonction :

  • Doubler. Chaîne source ;
  • Recherche de sous-chaîne. La sous-chaîne souhaitée ;
  • DirectionRechercher. Spécifie la direction de recherche d'une sous-chaîne dans une chaîne. Peut prendre des valeurs :
    • Direction de la recherche. Depuis le début;
    • Direction de la recherche. Depuis la fin;
  • La position de départ. Spécifie la position dans la chaîne à laquelle commencer la recherche ;
  • Numéro d'entrée. Spécifie le nombre d'occurrences de la sous-chaîne recherchée dans la chaîne source.

Exemple 9. Dans la ligne "Hello world!" déterminer la position de la dernière occurrence du caractère "et".

PositionNumber = StrFind("Hello World!", "and", SearchDirection.From End); Notifier(NuméroPosition);

Le résultat de l'exécution de ce code sera l'affichage du numéro de la dernière occurrence du symbole "et" à l'écran : 9.

VReg

VReg(<Строка>) . Convertit tous les caractères de la chaîne spécifiée en 1s 8 en majuscules.

Exemple 10. Convertir la chaîne "hello world!" en majuscule.

StringVreg = Vreg("bonjour le monde!"); Rapport(StringVreg);

Le résultat de l'exécution de ce code sera l'affichage de la chaîne "HELLO WORLD!"

HReg

HReg(<Строка>) . Convertit tous les caractères de la chaîne spécifiée en 1s 8 en minuscules.

Exemple 11. Convertissez la chaîne "HELLO WORLD!" en minuscules.

StringNreg = NReg("BONJOUR LE MONDE!"); Rapport(StringVreg);

Le résultat de l'exécution de ce code sera l'affichage de la chaîne "hello world!"

TReg

TReg(<Строка>) . Convertit une chaîne comme suit : le premier caractère de chaque mot est converti en majuscule, les caractères restants du mot sont convertis en minuscules.

Exemple 12. Mettez en majuscule les premières lettres des mots de la chaîne "hello world!".

StringTreg = TReg("bonjour le monde!"); Rapport(StringTreg);

Le résultat de l'exécution de ce code sera l'affichage de la chaîne "Hello World!"

Symbole

Symbole(<КодСимвола>) . Obtient un caractère par son code Unicode.

Exemple 13. Ajoutez gauche et droite à la ligne "Hello World!" symbole ★

ChaîneAvecÉtoiles = Caractère("9733")+"Hello World!"+Caractère("9733"); Report(StringWithStars);

Le résultat de cette exécution de code sera l'affichage de la chaîne "★Hello World!★"

SymboleCode

CodeSymbole(<Строка>, <НомерСимвола>) . Obtient le code de caractère Unicode à partir de la chaîne spécifiée dans le premier paramètre, située à la position spécifiée dans le deuxième paramètre.

Exemple 14. Trouver le code du dernier caractère de la chaîne "Hello World!".

String = "Bonjour le monde !" ; CharacterCode =CharacterCode(String, StrLength(String)); Notifier (CharacterCode);

Le résultat de l'exécution de ce code sera l'affichage du code du symbole "!" — 33.

Ligne vide

Ligne vide(<Строка>) . Vérifie si la chaîne se compose uniquement de caractères non significatifs, c'est-à-dire si elle est vide.

Exemple 15. Vérifiez si la chaîne est vide et se compose de trois espaces.

Vide = chaîne vide(" "); Rapport (vide);

Le résultat de l'exécution de ce code sera l'affichage du mot "Oui" (expression chaîne d'une valeur booléenne Vrai).

StrRemplace

StrRemplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Recherche toutes les occurrences de la sous-chaîne de recherche dans la chaîne source et la remplace par la sous-chaîne de remplacement.

Exemple 16. Dans la ligne "Hello World!" remplacer le mot "Monde" par le mot "Amis".

String = StrReplace("Hello World!", "World", "Friends"); notifier(chaîne);

Le résultat de l'exécution de ce code sera l'affichage de la chaîne "Hello Friends!"

StrNumberRows

StrNombre de lignes(<Строка>) . Permet de compter le nombre de lignes dans une chaîne multiligne. Pour passer à nouvelle ligne en 1s 8 le symbole est utilisé PS(caractère de saut de ligne).

Exemple 17. Déterminez le nombre de lignes dans le texte :
"Première ligne
Deuxième ligne
Troisième ligne"

Number = StrNumber of Lines("Première ligne"+Symboles.PS +"Deuxième ligne"+Symboles.PS +"Troisième ligne"); Signaler le numéro);

Le résultat de l'exécution de ce code sera l'affichage du nombre de lignes dans le texte : 3

StrGetString

ChaîneRécupèreChaîne(<Строка>, <НомерСтроки>) . Obtient une chaîne dans une chaîne multiligne par son numéro. La numérotation des lignes commence à 1.

Exemple 18. Obtenez la dernière ligne du texte :
"Première ligne
Deuxième ligne
Troisième ligne"

Texte = "Première Ligne"+Caractères.PS +"Deuxième Ligne"+Caractères.PS +"Troisième Ligne" ; DernièreLigne = StrGetLine(Texte, StrNombre de Lignes(Texte)); Notifier (dernière ligne) ;

Le résultat de l'exécution de ce code sera l'affichage de la ligne "Troisième ligne".

StrNumberOccurrencesStrNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Renvoie le nombre d'occurrences de la sous-chaîne spécifiée dans une chaîne. La fonction est sensible à la casse.

Exemple 19. Déterminez combien de fois la lettre "c" entre dans la ligne "Lignes en 1s 8.3 et 8.2", quelle que soit sa casse.

String = "Lignes dans 1s 8.3 et 8.2" ; Nombre d'occurrences = StrNombre d'occurrences(Vreg(String), "C"); rapport (nombre d'occurrences);

Le résultat de l'exécution de ce code affichera le nombre d'occurrences à l'écran : 2.

PageCommenceDe

StrBeginsFrom(<Строка>, <СтрокаПоиска>) . Vérifie si la chaîne donnée dans le premier paramètre commence par la chaîne dans le deuxième paramètre.

Exemple 20. Déterminez si le TIN de la contrepartie sélectionnée commence par le chiffre 1. Soit la variable contrepartie Contreparties.

NIF = Entrepreneur.TIN ; StartsCUnits = StrStartsC(TIN, "1"); If StartsFROM1 Then //Votre code EndIf;

La page se termine le

StrEndsOn(<Строка>, <СтрокаПоиска>) . Vérifie si la chaîne passée dans le premier paramètre se termine par la chaîne dans le deuxième paramètre.

Exemple 21. Déterminez si le TIN de la contrepartie sélectionnée se termine par le chiffre 2. Soit la variable contrepartie le lien vers l'élément de répertoire est stocké Contreparties.

NIF = Entrepreneur.TIN ; Se termine par deux = Str se termine par (TIN, "2"); Si se termine par deux alors //Votre code EndIf;

Fractionnement de page

StrDiviser(<Строка>, <Разделитель>, <ВключатьПустые>) . Divise une chaîne en parties par les caractères de délimitation spécifiés et écrit les chaînes résultantes dans un tableau. Le premier paramètre stocke la chaîne d'origine, le deuxième paramètre contient la chaîne contenant le délimiteur, le troisième paramètre indique si les chaînes vides doivent être écrites dans le tableau (par défaut Vrai).

Exemple 22. Supposons que nous ayons une chaîne contenant des nombres séparés par le symbole ";", obtenez un tableau de nombres à partir de la chaîne.

Chaîne = "1 ; 2 ; 3" ; Tableau = StrSplit(String, ";"); For Count = 0 By Array.Quantity() - 1 Tentative de boucle Array[Count] = Number(Ablp(Array[Count])); Tableau d'exceptions[W] = 0 ; EndTry EndCycle ;

À la suite de l'exécution, un tableau avec des nombres de 1 à 3 sera obtenu.

StrConnect

StrConnect(<Строки>, <Разделитель>) . Convertit un tableau de chaînes du premier paramètre en une chaîne contenant tous les éléments du tableau à l'aide du délimiteur spécifié dans le deuxième paramètre.

Exemple 23. À l'aide du tableau de nombres de l'exemple précédent, récupérez la chaîne d'origine.

For Count = 0 By Array.Quantity() - 1 Loop Array[Count] = String(Array[Count]); FinCycle ; Chaîne = StrConnect(Tableau, "; ");