English to Pig Latin translator
Working on an English to Pig Latin translator. When I click Translate I am getting:
System.Windows.Forms.TextBox.Text: System.Windows.Forms.TextBox.Text:Syst..using System;
Here's the code I have so far, any help narrowing this down would be greatly appreciated.
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace CSA_164_Midterm
{
public partial class frmTranslator : Form
{
public frmTranslator()
{
InitializeComponent();
}
private void btnTranslation_Click(object sender, EventArgs e)
{
string english = Convert.ToString(txtInput.Text);
string pigLatin = "";
string firstLetter;
string restOfWord;
string vowels = "AEIOUaeiou";
int letterPos;
foreach (string word in english.Split())
{
firstLetter = word.Substring(0,1);
restOfWord = word.Substring(1,word.Length - 1);
letterPos = vowels.IndexOf(firstLetter);
if (letterPos == -1)
{
pigLatin = restOfWord + firstLetter + "ay";
}
else
{
pigLatin = word + "way";
}
txtTranslation.Text = txtTranslation.ToString();
txtInput.Focus();
}
}
private void btnClear_Click(object sender, EventArgs e)
{
txtInput.Text = "";
txtTranslation.Text = "";
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Re: English to Pig Latin translator
Ok, so I have gotten further in this, but now it is just translating the last word I enter in the English box. Any general ideas of why this isn't working? I'm guessing I am not loading the translated words correctly. Thanks for looking.
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace CSA_164_Midterm
{
public partial class frmTranslator : Form
{
public frmTranslator()
{
InitializeComponent();
}
private void btnTranslation_Click(object sender, EventArgs e)
{
string english = Convert.ToString(txtInput.Text);
string pigLatin = "";
string firstLetter;
string restOfWord;
string vowels = "AEIOUaeiou";
int letterPos;
foreach (string word in english.Split())
{
firstLetter = word.Substring(0,1);
restOfWord = word.Substring(1,word.Length - 1);
letterPos = vowels.IndexOf(firstLetter);
if (letterPos == -1)
{
pigLatin = restOfWord + firstLetter + "ay";
}
else
{
pigLatin = word + "way";
}
txtTranslation.Text = pigLatin;
txtInput.Focus();
}
}
private void btnClear_Click(object sender, EventArgs e)
{
txtInput.Text = "";
txtTranslation.Text = "";
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Re: English to Pig Latin translator
try this
Code:
if (letterPos == -1)
{
pigLatin = pigLatin + " " + restOfWord + firstLetter + "ay";
}
else
{
pigLatin = pigLatin + " " + word + "way";
}
Curt
Re: English to Pig Latin translator
If I am looking at the code correctly then the issue is within your foreach loop.
Code:
// The loop extracts each word from the text box to translate it into pig latin
foreach (string word in english.Split())
{
firstLetter = word.Substring(0,1);
restOfWord = word.Substring(1,word.Length - 1);
letterPos = vowels.IndexOf(firstLetter);
// Check for condition and set pigLatin variable to correct phrase
if (letterPos == -1)
{
pigLatin = restOfWord + firstLetter + "ay";
}
else
{
pigLatin = word + "way";
}
// Replaces text in txtTranslation with word stored in variable pigLatin
txtTranslation.Text = pigLatin;
txtInput.Focus();
}
If you look at
Code:
txtTranslation.Text = pigLatin;
You can see that it sets the translated word into the text box. The issue is not that it is only translating the last word but it replaces the previous word. If you want the whole sentence you have to append the new text into the text box.
I may be wrong since I just took a brief overlook at the code. If it still causing an issue I'll look it over when I have a bit more time on my hands.