2010-07-31 4 views
1

Salut à tous, j'essaie de remplacer les grands espaces entre le texte avec un seul. Ma sortie ressemble à ceci maintenant:VB6 se déplacer de grands espaces

5964215"> 

     This is just the first example of the spaces 
    5964478"> 

     This would be the 2nd example of showing how many spaces this thing has in each sentence. 
    5964494"> 

Cela provient d'une zone de texte qui a plusieurs lignes à true. Voici à quoi cela ressemble quand il n'y a pas plusieurs lignes à true.

http://www.june3rdsoftware.com/forums/vb6.jpg

Je ne peux pas sembler obtenir les espaces pour aller! BTW, ce texte provient d'une page Web si cela fait une différence.

David

+0

Vous voulez juste obtenir des espaces vides excessifs dans un espace? Avez-vous essayé de faire défiler la zone de texte et de remplacer les espaces? – LittleBobbyTables

+0

Utilisez la regex 's/+// g'. Pas d'expressions rationnelles dans VB6? Bien sûr que non, c'est à partir de 1998. Soupir. – MvanGeest

+0

Pourquoi utilisez-vous toujours VB6? VB.NET est si facile à mettre en place et vous avez une énorme bibliothèque à votre disposition. À ce stade, il est vraiment naïf d'utiliser VB6. – ChaosPandion

Répondre

6

Selon la suggestion de MvanGeest, voici un code VB pour remplacer les blocs d'espaces blancs:

Sub test() 
    Dim x As String, y As String 
    x = "abcd  defg    1233" 
    Dim re As New RegExp 
    re.Pattern = "\s+" 
    re.Global = True 
    y = re.Replace(x, " ") 
    Debug.Print y 
End Sub 

Pour faire ce travail, vous devez ajouter une référence à « Microsoft VBScript Regular Expresssions "à votre projet.

+0

Il y a donc des regex dans VB6, il vous suffira de les invoquer en utilisant une incantation secrète. Bien loin de la magie Perl, je l'admets, mais ne serait-il pas plus facile d'utiliser un nouveau langage de programmation (@StealthRT)? – MvanGeest

+0

... un nouveau comme Perl, qui date de 1987? –

+0

Je voulais dire que la magie Perl est en réalité beaucoup plus sombre et effrayante que ce qui est appliqué ici. Néanmoins, je suis un passionné de Perl et tenterai (probablement vainement) de le défendre en disant que le champ "Stable release" de Perl sur WP dit 2010 tandis que Visual Basic se lit en 1998. Je ne veux pas commencer une guerre et penser à tout le monde devraient utiliser la langue qu'ils aiment, mais aussi accepter que plus une langue est ancienne, plus les tâches apparemment simples deviennent difficiles. – MvanGeest

0

En supposant qu'aucun support regex ne soit disponible, pourquoi ne pas configurer une machine à états simple qui définira l'état = 1 lorsqu'un espace est trouvé et définit l'état = 0 une fois qu'un non-espace est rencontré. Vous pouvez déplacer char par char quand state = 0 (donc ne copier que 1 espace par série d'espaces).

+3

Répéter un faux mythe encore et encore ne le rend pas plus vrai. –

0

en supposant également pas regex, vous pouvez essayer quelque chose comme

str = "long texte avec des espaces"

i = LenB (str)

str = Remplacer (str, "", " «)

Do While LenB (str) <> i

i = LenB (str)

str = Remplacer (str, « », " «)

boucle

Bien sûr, ce code pourrait être optimisé pour les séquences spatiales à long mais il pourrait être tout ce que vous avez besoin ainsi

+0

Le remplacement est destiné à être str, 2 espaces, 1 espace – Claudio