Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Summation of textbox!

Posted on 2006-10-19
10
Medium Priority
?
306 Views
Last Modified: 2010-04-23
Hi

VB .Net windows project.
I have a textbox399 from where I wan't to make a summation of the digits in the box.
The text in the textbox could look like this:   "2-2-3-1" (The result should be: "8")
Trying to sum the digits I have made a replace but what then?

        Dim Antal As Integer = Replace(TextBox399.Text, "-", "+")
   

Regards Steen

0
Comment
Question by:steensommer
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
10 Comments
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 17770288
Hi steensommer;

This should do what you need.

    Private Sub Button2_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button2.Click

        If TextBox399.Text = "" Then Return
        Dim Total As Integer = 0
        Dim digits() As String = TextBox399.Text.Trim.Split("-"c)
        For Each dig As String In digits
            If IsNumeric(dig) Then
                Total += CType(dig, Integer)
            Else
                MessageBox.Show("The character => " & dig & " is not a number")
                Return
            End If
        Next

        MessageBox.Show(Total.ToString())

    End Sub

Fernando
0
 
LVL 1

Author Comment

by:steensommer
ID: 17770305
Hi Fernando

...and if I wan't to use several textboxes say: Textbox399, textbox400 etc?

Steen
0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 17770372
Hi steensommer;

Put the code in a function and call it for each textbox. Then in you code you can add up the return values


    Private Function Summation( ByVal val As String ) As Integer

        If val = "" Then Return -1 ' Error return -1
        Dim Total As Integer = 0
        Dim digits() As String = val.Trim.Split("-"c)
        For Each dig As String In digits
            If IsNumeric(dig) Then
                Total += CType(dig, Integer)
            Else
                MessageBox.Show("The character => " & dig & " is not a number")
                Return -1
            End If
        Next

        Return Total

    End Function

Fernando
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Author Comment

by:steensommer
ID: 17770448
Hi Fernando

Impressing programming - thank you.

I have a few question:

1) What does the little c in "val.Trim.Split("-"c) do?
2) If I want to sum several textboxes how do I return the sum in a messagebox?

Steen

0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 17771391
Hi Steen;

To your question, "What does the little c in "val.Trim.Split("-"c) do?"

The String Split method takes as its parameter a Char array or a single Char. To identify the character between the quotation marks as a Char and not a String you place the c after the last quotation mark.

To your question, "If I want to sum several textboxes how do I return the sum in a messagebox?"

One way to do this is to place all the TextBox text values into one string. Then feed the string in to function and place the return value into the message box.

    Dim GetTotal As String
    GetTotal = TextBox1.Text.Trim & "-" & TextBox2.Text.trim & "-" & ... & "-" TextBoxN.Text.Trim
    Dim TotalValue As Integer = Summation( GetTotal )
    MessageBox.Show( TotalValue )

Fernando

0
 
LVL 1

Author Comment

by:steensommer
ID: 17772155
Hi Fernando

I'm still impressed :0)

If one (or more) textbox(es) in the array is empty ("") then the TotalValue returns "-1". Can this be changes so it ignores the empty boxes but still returns the correct value.

Steen
0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 17774470
You can place the following line at the beginning of the Summation function: just after this line, If val = "" Then Return -1 ' Error return -1.

        ' Check for leading and trailing - and remove them
        val = Regex.Replace(val, "(^-{1,}|-{1,}$)", "")
        ' Replace muiltiple - with a single -
        val = Regex.Replace(val, "(-{2,})", "-")

Fernando
0
 
LVL 64

Accepted Solution

by:
Fernando Soto earned 500 total points
ID: 17774483
You will need to add this statement at the top of the file for the regular expression.

Imports System.Text.RegularExpressions

0
 
LVL 1

Author Comment

by:steensommer
ID: 17774533
Hi Fernando

You rearly lost me there :0)

Thank you for your great expert help!!

Regards Steen
0
 
LVL 64

Expert Comment

by:Fernando Soto
ID: 17776859
Just a little explanation of the Regex patterns I used here.

In the following statement:
    Regex.Replace(val, "(^-{1,}|-{1,}$)", "")
The pattern "(^-{1,}|-{1,}$)" has the following meaning
    ( ... )        Everything between ( and ) is in a capture group marked by ( and )
    ^             Starting from the beginning of the string
    -              This has no special meaning and therefore matches it self in the string
    {1,}         This means that the previous character must repeat 1 or more times with out limits
    |              Is the Or operator so if what is on the left does not match see if on the right matches.
    $              This means that the previous character must match at the end of the string.

So what this, "^-{1,}", is saying is that if the string starts with one or more - then remove those characters and replace them with an empty string or if we are at the end of the string and we have one or more - characters then also remove them and replace them with the empty. I say empty string because the replacement string is the third parameter and it is "".

The other Regex statement:
    Regex.Replace(val, "(-{2,})", "-")
Is basically the same thing. The pattern is "((-{2,})", and the replacement string is "-" working on the string in the variable val.
    ( ... )        We have the same type of group as above
    -              Character that matches itself
    {2,}          Previous character must repeat 2 or more times

So when you have an empty textbox or multiple empty text box’s you will have two or more consecutive - in the string. The Regex statement will find all - that repeat themselves two or more times and replace them with just one.

Good luck;

Fernando
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
Suggested Courses

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question