Click here to Skip to main content
15,867,594 members
Please Sign up or sign in to vote.
4.00/5 (2 votes)
See more:
i m having text box value as test10

i want to get integer value i.e 10

i used code as
int b = Convert.ToInt32(Txt1.Text);
Response.Write(b);

<br />
it show error as "Input string was not in a correct format."


how to get the value please tell me
Posted

Try this:
C#
string Numbers = "";
for(int i = 0; i < Txt1.Length; i++) 
{
  if ((byte)Txt1.Text[i] >= 38 & (byte)Txt1.Text[i] <= 57) 
  {
    Numbers = Numbers + "" + Txt1.Text[i]; 
  }
}
Response.Write(Convert.ToInt32(Numbers));
 
Share this answer
 
v2
Comments
Kim Togo 2-May-11 12:26pm    
Numbers in ASCII charset begins from 48 and ends in 57.
http://www.asciitable.com/

char 38 to 47 has nothing to do with numbers.
All well and valid but he wants to inform user :)
C#
int b;
try
{
    b =Int32.Parse(Text);
}
catch (System.FormatException ex)
{
   Response.Write("Integer Dude!!! I N T E G E R!");
}
catch (System.OverflowException)
{
   Response.Write("Don't test me...");
}
finally
{
    b = 0;
}
 
Share this answer
 
Comments
Ilirian Citaku 27-Aug-19 5:16am    
ex is never used
Hi beginner in C#.net,

You can use this function for validating the textBox input:
using System.Globalization;

public static bool IsNumeric(string value, System.Globalization.NumberStyles NumberStyle)
{
    Double result;
    return Double.TryParse(value, NumberStyle,System.Globalization.CultureInfo.CurrentCulture, out result);
}


Just call the function where value is the TextBox text and you can use NumberStyle.Integer for validating the text as integer value.

I hope this help,
:)
 
Share this answer
 
v2
Comments
RaviRanjanKr 2-May-11 10:18am    
Nice Answer! My 5 :)
Kim Togo 2-May-11 10:39am    
Nice method. But it will not solve OP question. Will the method work if the text is "test10" ?
you need regex for this

//first you need to include header file 

using System.Text.RegularExpressions;

 string newString = Regex.Replace("test10", "[^.0-9]", "");
 int k = int.Parse(newString);
 
Share this answer
 
Comments
Mahendra.p25 2-May-11 7:54am    
string newString = Regex.Replace(Textbox1.Text, "[^.0-9]", "");
Kim Togo 2-May-11 9:34am    
My 5.
Just use \d.
string newString = Regex.Replace(Textbox1.Text, @"[^\d]", string.Empty);
beginner in C#.net 2-May-11 7:55am    
its working thank u sir.
my 5
Tarun.K.S 2-May-11 8:05am    
Then accept the answer as well.
yesotaso 2-May-11 8:12am    
How about "Regex.Replace("-3E7", "[^.0-9]", "");"? is it not valid?
Learn basic validation from net
u can use regularexpressionvalidator or javascript
various links are there like

http://onetidbit.wordpress.com/2008/01/25/14/[^]
 
Share this answer
 
You could do one/all of these:

0) Handle the TextChanged event for the TextBox and simply not allow anything but integer values to be input

1) Wait until the user clicks the submit button and call Int32.TryParse() method instead of Convert.ToInt32().

2) Use the built-in asp.net validator functionality.

Google is your friend.
 
Share this answer
 
You can use Regular Expression[^] to get the value or validate input.

C#
string valueString = System.Text.RegularExpressions.Regex.Replace(Txt1.Text, @"[^\d]", string.Empty, System.Text.RegularExpressions.RegexOptions.Compiled);
int b = int.Parse(valueString);


This will get you these outputs:

"10tons wast and 8 tons of stone" => 108
"108" => 108
"Hello Peter, please call me at (0)47-784-9787-1045" => 04778497871045

You have to be more specific. What if you have a value of "10tons wast and 8 tons of stone".
Do you then what the integer value to be "108" or just "10" or "8" ?
 
Share this answer
 
v4
just try!!

using System.Text.RegularExpressions;

string newString = Regex.Replace(Convert.Tostring(Txt1.Text), "[^.0-9]", "");
int b = Convert.ToInt32(newString);
 
Share this answer
 
Comments
Groulien 2-May-11 7:38am    
Nice, way cleaner than mine.
5
RAJI @Codeproject 2-May-11 7:41am    
Thank you... i got it becoz i tried it before
beginner in C#.net 2-May-11 8:09am    
maheindre gave answer.
beginner in C#.net 2-May-11 8:22am    
tnx for ur ans.. its working
Kim Togo 2-May-11 10:41am    
Try to use string.Empty instead of "". It is easer to read and understand.
My 5. Good use of regex
Your best bet is to check for each character if it is a number.
My code snippet;
Test123Test456 will become 123456
C#
string Numbers = "";
for(int i = 0; i < Txt1.Length; i++) //Iterate through all the characters
{
  if ((byte)Txt1.Text[i] >= 38 && (byte)Txt1.Text[i] <= 57) //Using ascii values to check if it's a number, see also; ASCII Table
  {
    Numbers += Txt1.Text[i]; //If it's a number, store it in Numbers
  }
}
Response.Write(Convert.ToInt32(Numbers));
 
Share this answer
 
v2
Comments
Kim Togo 2-May-11 10:15am    
Something is wrong in your if statement.
Numbers in ASCII charset begins from 48 and ends in 57.
http://www.asciitable.com/

char 38 to 47 has nothing to do with numbers.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900