我正在尝试创建一个简单的桌面应用程序,您可以在其中进行分数运算。我创建了Rational类,但是我需要一个分母和分子。我只能使用2个文本框,每个部分一个。有没有办法将带有“ /”的内容分成两个不同的变量?
我写了一些简单的代码来检查文本框中的“ /”,但是我不确定如何将其分成两个变量。
char denominator;
for(int i = 0; i <= textBox1.Text.Length; i++)
{
if (textBox1.Text[i] =='/')
{
int fromhere = i;
for(int y = 0; y <= i; i++)
{
denominator = textBox1.Text[y];
}
}
}
我想稍后将这些变量放入我的有理对象的参数中,然后允许用户执行操作。
答案 0 :(得分:2)
最简单的方法是像这样使用HttpFileCollectionBase addedFiles = ...
using( SmtpClient mailClient = new SmtpClient( smtpServer, Convert.ToInt16( smtpPort ) ) )
using( MailMessage emailMessage = new MailMessage( fromAddress, toAddress, subject, message ) )
{
if( addedFiles?.Count > 0 )
{
foreach( HttpPostedFileBase file in addedFiles )
{
Boolean isOK = ( file.FileName.EndsWith( ".pdf", StringComparison.OrdinalIgnoreCase ) || file.FileName.EndsWith( ".doc", StringComparison.OrdinalIgnoreCase ) ) && file.ContentLength > 0 && file.ContentLength < 10485760;
if( isOK )
{
MemoryStream copy = new MemoryStream( capacity: file.ContentLength );
file.InputStream.CopyTo( copy );
// Rewind the stream, this is important! (You cannot rewind ASP.NET's file.InputStream, hence why we use a MemoryStream copy).
copy.Seek( 0, SeekOrigin.Begin );
DoSomethingWithFileStream( copy );
// Rewind the stream again, this is important!
copy.Seek( 0, SeekOrigin.Begin );
Attachment att = new Attachment( copy, name: file.FileName );
emailMessage.Attachments.Add( att );
}
}
}
mailClient.Send( emailMessage );
}
:
string.Spilt()
答案 1 :(得分:0)
考虑到您有一个文本框:
string input = textBox1.Text;
var twoParts = input.Split('/');
if (twoParts.Length != 2)
{
// Invalid input
// TODO
}
if (!decimal.TryParse(twoParts[0], out var numerator) || !decimal.TryParse(twoParts[1], out var denominator))
{
// Invalid input
// TODO
}
var result = numerator / denominator;
答案 2 :(得分:0)
您可以使用split命令来解决该问题
string line = "123/0215";
string[] splitedData = line.Split('/');
console.WriteLine(splitedData[0]);
console.WriteLine(splitedData[1]);
输出将是:
-> 123
-> 0215
答案 3 :(得分:0)