C#在空隙之间传递字符串

时间:2010-08-17 13:19:26

标签: c# winforms

我想做的就是将一个字符串从一个空格传递到另一个空格。

private void getFilename2()
    {
        if (textBox2.TextLength.Equals("0"))
        {

        }
        else
        {
            string inputString = textBox2.Text.ToString();
            string last = inputString.Substring(inputString.LastIndexOf('\\') + 1);
            string[] filename2 = last.Split('.');
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        getFilename1();
        getFilename2();
string filez = filename2;
}

我知道这不行,但我对如何在空隙中移动字符串非常不熟悉。

6 个答案:

答案 0 :(得分:8)

您应该用

替换getFilename2功能
Path.GetFileNameWithoutExtension(textBox2.Text)

答案 1 :(得分:5)

您最好的选择是使用类字段/属性或返回值的函数。

string filez = GetFilename2();

private string GetFilename2() {
{    
    if (textBox2.TextLength.Equals("0")) return "";

    string inputString = textBox2.Text.ToString();    
    string last = inputString.Substring(inputString.LastIndexOf('\\') + 1);    
    return last.Split('.');    
}   

答案 2 :(得分:3)

您可以通过引用将字符串作为参数传递给函数

private void button1_Click(object sender, EventArgs e)
{
    string fileName;
    getFilename1(ref string fileName);
}

private void getFilename1(ref string fileName)
{
    // Whatever you do with fileName here will be reflected in the other function
}

答案 3 :(得分:3)

让我们从您的方法名称开始:getFilename2

  • “get”的前缀表示该方法应具有返回类型
  • 更合适的名称可能是SetFileName

我假设有getFileName1方法正在从textBox1检索文件名,并且与getFileName2具有完全相同的代码,但使用textBox1代替textBox2。这将是重构代码并创建可以重用的常用方法的好地方:

private string GetFileName(string str) 
{
  if (string.IsNullOrEmpty(str)) return string.Empty;

  string last = str.Substring(str.LastIndexOf('\\') + 1);    
  return last.Split('.');    
}

但是,我们可以再次重构并使用内置的.NET方法:

private string GetFileName(string str) 
{
  return Path.GetFileNameWithoutExtension(str);
}

现在有一种常用的方法,我们可以根据需要重新使用它:

private void button1_Click(object sender, EventArgs e)
{
  string filez = GetFileName(textBox2.Text);
}

现在我们有一个GetFileName()方法;它所做的就是调用GetFileNameWithoutExtension()的内置.NET方法。因此,我们应该使用内置的.NET方法来返回文件名,而不是使用方法:

private void button1_Click(object sender, EventArgs e)
{
  string filez = Path.GetFileNameWithoutExtension(textBox2.Text);
}

现在,让我们看一下将一个字符串从一个void传递给另一个void。通常,您希望使用内部字段或属性执行此操作。由于我偏爱属性,我将以它们为例:

private string FileName1 {get; set;}
private string FileName2 {get; set;}

private void SetFileName1()
{
  FileName1 = Path.GetFileNameWithoutExtension(textBox1.Text);
}
private void SetFileName2()
{
  FileName2 = Path.GetFileNameWithoutExtension(textBox2.Text);
}
private void button1_Click(object sender, EventArgs e)
{
  SetFileName1();
  SetFileName2();

  string filez1 = FileName1;
  string filez2 = FileName2;
}

但是,如果您不想使用内部字段或属性,则可以按照Rachel

的答案设置参考值。

答案 4 :(得分:1)

如果你传递字符串,理想情况下你应该明确地传递它们。 IE:使您的函数获取和/或返回它们将使用的值,尤其是如果除了调用getFilename2的代码之外的任何其他值都不会使用返回值。但是,如果你不能这样做,你可以在课堂内声明private string filename1 = null; public string[] filename2 = null,但不在你的任何方法之外。

如果你走这条路,请确保从你的方法中删除任何string filename1string[] filename2,否则你最终会声明一个具有相同名称的局部变量(并且永远不会设置实例变量)。

答案 5 :(得分:0)

您可以将其存储在类级别变量中。通过这种方式,任何功能都可以访问它。