Ponctuation dans phrase

je test Messages postés 23 Date d'inscription dimanche 17 avril 2005 Statut Membre Dernière intervention 6 décembre 2009 - 10 oct. 2007 à 23:05
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 14 oct. 2007 à 22:59
slt à tous

j'ai un textbox avec de multiples lignes.
les lignes sont generées avec des checkbox optionbouton et autres petites choses.
le programe ne sait pas comment sera fait le formatage des lignes et j'ai des problèmes avec les "points" "virgules" "espaces" "double point" et autres ponctuations.

ex:
Je suis parti : Pecher : Chasser : Camper :
Dans cette exemple la fin de la ligne c'est :  je voudrais que ca se remplace par un point Camper.

Je peux aussi avoir le meme type de phrase mais avec un autre formatage
ex:
Je suis parti : Pecher : Chasser : Camper :
Dans cette phrase je voudrais qu'elle ressemble à ça:
Je suis parti : Pecher. Chasser. Camper.

Chaque phrase sera bien sure analysée individuellement en fonction du formatage que je veux.

je pense qu'il faut faire une recherche d'un caractère alphanumerique en majuscule, mais là je seche carrement, je n'ai aucune idée de coment faire.

pouvez vous m'aider dans cette tache.

merci d'avance

7 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 oct. 2007 à 10:59
salut,

voici un exemple en VB6, il faut juste remplacer les split left right etc... compris dans la classe string

Option Explicit

Private Sub Form_Load()
Text1.Text = "Je suis parti : Pecher :
Chasser : Camper :" & vbCrLf & _
             "Dans cette phrase je voudrais qu'elle ressemble à ça
:" & vbCrLf & _
             "Je suis parti : Pecher. Chasser. Camper." & vbCrLf & _
             "quand une phrase fini par <ESPACE> puis <:>, la fin
sera remplacée par <.>"
End Sub

Private Sub Command1_Click()
    Dim aStr() As String, i As Integer
    aStr = Split(Text1.Text, vbCrLf)
    For i = LBound(aStr) To UBound(aStr)
        If RightB$(aStr(i), 4) = "
:" Then aStr(i) = LeftB$(aStr(i), LenB(aStr(i)) - 4) & "."
    Next i
    Text1.Text = Join(aStr, vbCrLf)
    Erase aStr
End Sub

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
je test Messages postés 23 Date d'inscription dimanche 17 avril 2005 Statut Membre Dernière intervention 6 décembre 2009
14 oct. 2007 à 18:29
merci bcp PCPT

Comment faire si cette phrase se termine avec un espace uniquement ?
j'ai essayer de modifier ton code mais sans rien arriver à faire !

If RightB$(aStr(i), 4) = " :" remplacé par If RightB$(aStr(i), 4) = " "
ne marche pas !

encore merci de ton aide très precieuse
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 oct. 2007 à 18:38
salut,
donc que tous les espaces finaux soient remplacés par un point final?

réfléchi de suite à toutes les fins possibles...
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
je test Messages postés 23 Date d'inscription dimanche 17 avril 2005 Statut Membre Dernière intervention 6 décembre 2009
14 oct. 2007 à 21:51
re moi

en fait ya que l'espace qui me gene car quand je remplace par n'importe quel caractère ca change bien.
If RightB$(aStr(i), 4) = " ,"

et heu, je peux encore me permettre de te demander de faire cette action dans un textbox de plusieurs lignes

merci de ne pas m'envoyer balader en tout cas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 oct. 2007 à 22:12
re toi

tu n'as pas répondu à ma question :
tu veux que "tous les espaces finaux soient remplacés par un point final"?

le code fourni traite déjà la zone de texte étant multiligne, mais tu confonds peut-être le retour chariot (vbcrlf) avec le retour automatique selon la taille du texte (donc un espace)
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
je test Messages postés 23 Date d'inscription dimanche 17 avril 2005 Statut Membre Dernière intervention 6 décembre 2009
14 oct. 2007 à 22:26
en fait oui, je veux que chaque ligne se finissent par un point

j'ai un vbcrlf a la fin de chaque code qui genere mes lignes.

:)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 oct. 2007 à 22:59
tu comprends que t'es pas clair?

tiens, modification pour espace :

Option Explicit

Private Sub Form_Load()
Text1.Text = "Je suis parti : Pecher :
Chasser : Camper :" & vbCrLf & _
             "Dans cette phrase je voudrais qu'elle ressemble à ça
:" & vbCrLf & _
             "Je suis parti : Pecher. Chasser. Camper." & vbCrLf & _
             "idem pour une phrase finissante par un espace " & vbCrLf & _
             "mais pas par une virgule," & vbCrLf & _
             "quand une phrase fini par <ESPACE> puis <:>, la fin
sera remplacée par <.>"
End Sub

Private Sub Command1_Click()
    Dim aStr() As String, i As Integer
    aStr = Split(Text1.Text, vbCrLf)
    For i = LBound(aStr) To UBound(aStr)
        If RightB$(aStr(i), 4) = "
:" Then
            aStr(i) = LeftB$(aStr(i), LenB(aStr(i)) - 4) & "."
        ElseIf (aStr(i) = LeftB$(aStr(i), LenB(aStr(i)) - 2) & "
") Then
            aStr(i) = LeftB$(aStr(i), LenB(aStr(i)) - 2) & "."
        End If
    Next i
    Text1.Text = Join(aStr, vbCrLf)
    Erase aStr
End Sub

si ta demande est juste de remplacer les retours chariot par un point çà doit être qqc du genre :
text1.text.replace(vbcrlf,".")

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous