473,386 Members | 1,804 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

How to extract just the letters from a string

Im trying to take only alphabetical characters out of what the users input to the text field (txtinput.text)..
So if i put in "The yellow man had 32 teeth!"
then im trying to get results like" Theyellowmanhadteeth"
anything besides characters should be stripped out of the inputed field.

this is in visual basic
Apr 26 '07 #1
14 21809
Hi im replying to this because im trying to take only alphabetical characters out of what the users input to the text field (txtinput.text).. So if i put in "The yellow man had 32 teeth!" then im trying to get results like" Theyellowmanhadteeth" anything besides characters should be stripped out of the inputed field.
Apr 26 '07 #2
Killer42
8,435 Expert 8TB
Hi im replying to this because im trying to take only alphabetical characters out of what the users input to the text field (txtinput.text).. So if i put in "The yellow man had 32 teeth!" then im trying to get results like" Theyellowmanhadteeth" anything besides characters should be stripped out of the inputed field.
The simple way would be to loop (probably using a For loop) through each character in the string (most likely using Mid() function) and if it is a letter, append it to another, output string.

Psedudo-code...
Expand|Select|Wrap|Line Numbers
  1. For Each Character In MyInput
  2.   If Ucase(Character) is between "A" and "Z"
  3.     MyOutput = MyOutput & Character
  4.   End If
  5. Next
Oh, and by the way - you can't really copy "anything besides characters" because they're all characters.
Apr 26 '07 #3
SammyB
807 Expert 512MB
Hi im replying to this because im trying to take only alphabetical characters out of what the users input to the text field (txtinput.text).. So if i put in "The yellow man had 32 teeth!" then im trying to get results like" Theyellowmanhadteeth" anything besides characters should be stripped out of the inputed field.
I'm speechless: Killer didn't use Replace! Just brute-force it:
Expand|Select|Wrap|Line Numbers
  1.     s = Replace(s, 1, "")
  2.     s = Replace(s, 2, "")
  3.     s = Replace(s, 3, "")
  4. ...
  5.  
and, you can put it in a loop so that it is only three lines.

But, also do it Killer's way so that you can learn how to use the Mid function.

BTW, if you're using VB.NET, these functions are part of the Strings module, so you say Strings.Mid(...) and Strings.Replace(...)
Apr 27 '07 #4
Killer42
8,435 Expert 8TB
I think it would be a bit more than three lines, Sammy. Or are you assuming that letters and numbers are the only possible characters?
Apr 27 '07 #5
dip_developer
648 Expert 512MB
Im trying to take only alphabetical characters out of what the users input to the text field (txtinput.text)..
So if i put in "The yellow man had 32 teeth!"
then im trying to get results like" Theyellowmanhadteeth"
anything besides characters should be stripped out of the inputed field.

this is in visual basic
Take two strings say strChar and strNumber

Read the length of your string....Loop through your string.....With the Substring() function Read characters one by one........Check characters with IsNumeric() Function whether its a number or not.....if number then strip off the character and store it to strNumber Otherwise store it to strChar.......

after the loop completes strChar will be your string without number.....
Implement it in code.......

it will be Something like....

Expand|Select|Wrap|Line Numbers
  1. Dim strChar,strNumber As String
  2. Dim n As Integer=myString.Length
  3. For i as integer=0 to n-1
  4. dim str as string=myString.Substring(i,i+1)
  5. If IsNumeric(str) then
  6. strNumber+=str
  7. else
  8. strChar+=str
  9. End if
  10. Next
  11. MsgBox(strChar)
Apr 27 '07 #6
Killer42
8,435 Expert 8TB
...Check characters with IsNumeric() Function whether its a number or not.....if number then strip off the character and store it to strNumber Otherwise store it to strChar.......
What happens to spaces, and punctuation?
Apr 28 '07 #7
Geoff
17
I'd do this with ascii characters for each letter, similar to what was said earlier with between "a" and "z".

This is proabably over complicating the problem quite a bit, but it works, it keeps the letters in the case they were found in as well ^^

Expand|Select|Wrap|Line Numbers
  1.  
  2.     Dim strText As String, strLeft As String, strRight As String
  3.     Dim intA As Integer
  4.     strText = Text1.Text
  5.     For intA = 1 To Len(strText)
  6.         strLeft = Left(strText, intA)
  7.         strRight = Right(strLeft, 1)
  8.  
  9.         If Asc(strRight) > 97 And Asc(strRight) < 122 Then
  10.             Label1.Caption = Label1.Caption & strRight
  11.         End If
  12.         If Asc(strRight) > 65 And Asc(strRight) < 90 Then
  13.             Label1.Caption = Label1.Caption & strRight
  14.         End If
  15.     Next intA
  16.  
  17.  
Hope this helps.
Apr 28 '07 #8
Killer42
8,435 Expert 8TB
I have a similar problem. can you guys help?
...
If I'm not mistaken, this sounds like a question for the Access forum. Would you like me to move it over there? You're likely to get better information there, if this is SQL-related.
Apr 29 '07 #9
Killer42
8,435 Expert 8TB
I'd do this with ascii characters for each letter, similar to what was said earlier with between "a" and "z".
...
Looks good.

I do have a couple of issues with it, just on performance grounds. There seems to be a lot of duplicated effort.

For example, why use Left() then Right() function? Is this faster than the Mid() function? (this is a serious question - sometimes the longer coding can be more efficient). Or perhaps it's just a personal preference?

And your second If test doesn't need to be executed if the first was satisfied. Personally, I'd short-cut the process by using ElseIf or similar. Plus I would place the Asc() value into a variable so the function is only called once.

In fact, one of the main reasons I like to use Select Case for these kind of situations is that it allows you much more flexibility in your conditions (if checking one value). For example, where you are doing two IF tests, I would have used something like...
Expand|Select|Wrap|Line Numbers
  1. Select Case Asc(strRight)
  2.   Case 97 To 122, 65 To 90
  3.     ...
  4.  
However, while this seems (to me) "nicer" to code, I don't know how it compares on performance. Must check it out one of these days...

Oh, and one more point - I would always use a Long in favour of an Integer, unless space was very tight. Believe it or not, Long data type is (very slightly) faster to use on a 32 bit processor.
Apr 29 '07 #10
If I'm not mistaken, this sounds like a question for the Access forum.
right. I got carried away.
Apr 29 '07 #11
Killer42
8,435 Expert 8TB
right. I got carried away.
Hang on, I'll do a bit of Moderator Magic...

Ok, here is the new thread.
Apr 29 '07 #12
dyc
32
I'd do this with ascii characters for each letter, similar to what was said earlier with between "a" and "z".

This is proabably over complicating the problem quite a bit, but it works, it keeps the letters in the case they were found in as well ^^

Expand|Select|Wrap|Line Numbers
  1.  
  2.     Dim strText As String, strLeft As String, strRight As String
  3.     Dim intA As Integer
  4.     strText = Text1.Text
  5.     For intA = 1 To Len(strText)
  6.         strLeft = Left(strText, intA)
  7.         strRight = Right(strLeft, 1)
  8.  
  9.         If Asc(strRight) > 97 And Asc(strRight) < 122 Then
  10.             Label1.Caption = Label1.Caption & strRight
  11.         End If
  12.         If Asc(strRight) > 65 And Asc(strRight) < 90 Then
  13.             Label1.Caption = Label1.Caption & strRight
  14.         End If
  15.     Next intA
  16.  
  17.  
Hope this helps.
Izzit this code is for vb6?in vb 2005 is there also can use the Left method?Thanks
Jun 8 '07 #13
Killer42
8,435 Expert 8TB
Izzit this code is for vb6?in vb 2005 is there also can use the Left method?Thanks
Yes, I write in VB6. VB 2005 certainly does have comparable functions, but I don't know the details. I think if you look in the doco, either on your PC or at MS' website, you should find it easily enough.
Jun 8 '07 #14
I always prefer to keep them from putting the characters I don't like into the field in the first place by intercepting the keypress event:

Expand|Select|Wrap|Line Numbers
  1. Private Sub Text1_KeyPress(KeyAscii As Integer)
  2. Select Case KeyAscii
  3.   Case Asc("a") To Asc("z"), Asc("A") To Asc("Z")
  4.   Case 13
  5.     'enter key can do something special
  6.     [user code]
  7.     keyascii=0  'this keeps the thing from beeping!
  8.   Case Else
  9.     KeyAscii = 0
  10. End Select
  11. End Sub
You can then allow back space, delete etc by adding the appropriate character codes. I use this a lot when I just want numbers in auto-calculating forms which I write a lot of.
Jun 20 '07 #15

Sign in to post your reply or Sign up for a free account.

Similar topics

3
by: Bernard Drolet | last post by:
Hi, I have a column containing a string; the string always starts with a letter (a-z), followed by an undefined number of letters, then one number or more. The REGEXP would look like *+ I...
5
by: rs | last post by:
I have a table with a timestamp field which contains the date and time. ie. 9/13/2004 9:10:00 AM. I would like to split this field into 2 fields, one with just the DATE portion ie 9/13/2004 and...
3
by: zek2005 | last post by:
Hi friends! I have a varchar field in my DB with numeric values separates by spaces. I need to extract the numbers to create an array. Example 1: 1820 1823 1825 --> need to be transform into ...
6
by: giloosh | last post by:
Hello, how can i extract a websites html into a string. also, is there a limit to how many chars a string can hold? something like: $string = extracted_html($url); thanks for any help!
3
by: deko | last post by:
I'm sure someone has passed this way before... I want to check to see is a domain name is contained in a string, and if one is, I want to extract it. In these strings, domains are always...
4
by: pigeonrandle | last post by:
Quickie time! Is indexing using String to get individual characters 'as quick' as converting the String to a Char and then using Char? Is the conversion to Char worth the processing? In...
5
markmcgookin
by: markmcgookin | last post by:
Hi Folks, I am writing a program to analyse an html page in java, I am connecting to a website, then going to extract ALL the links from it. I think the best way to do this is using the <a...
7
by: blitzztriger | last post by:
hello all , i need help at this: <? //connection stuff $conexao = mysql_connect("localhost", "root", "12345") or die ("error to db."); $db = mysql_select_db("mal") or die ("error selecting...
1
by: GS | last post by:
I need to extract sections out of a long string of about 5 to 10 KB, change any date format of dd Mmm yyyy to yyyy-mm-dd, then further from each section extract columns of tables. what is the...
2
by: rajesh0303 | last post by:
I want to extract substring from string and replace them by character. .ex:In "lphrd" , I want to extract and ,and want them to replace be replaced by Ä and É. so, that the result string...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.