Java扫描器类 - 在C#中做什么

时间:2013-07-09 10:14:59

标签: c# java java.util.scanner

public void checkInt(Scanner MemberNrSC)
    {
        MemberNrSC = new Scanner(txtMemberNr.getText());
        while (!MemberNrSC.hasNextInt())
        {
            string correctedMemberNr = Interaction.InputBox(null,"Medlemsnummer skal være et nummer, indtast det rigtige");

            if (correctedMemberNr == null)
            {
                MemberNrCancelled = true;
                break;
            }
            txtMemberNr.setText(correctedMemberNr);

            MemberNrSC = new Scanner(txtMemberNr.getText());
            MemberNrCancelled = false;
        }
    }

这是我的java检查器,因为如果文本框中只有数字..

但由于C#中没有扫描仪 - 我如何才能正确转换此方法? 我有其他方法需要扫描仪类 - 但我希望我能在这里得到一些帮助。

BTW:我使用的是基本的视觉输入框 - 因为我不知道C#中是否有类似的方式。

提前致谢; - )

/拉斯穆斯 丹麦

3 个答案:

答案 0 :(得分:0)

试试这个

class Scanner : System.IO.StringReader
{
  string currentWord;

  public Scanner(string source) : base(source)
  {
     readNextWord();
  }

  private void readNextWord()
  {
     System.Text.StringBuilder sb = new StringBuilder();
     char nextChar;
     int next;
     do
     {
        next = this.Read();
        if (next < 0)
           break;
        nextChar = (char)next;
        if (char.IsWhiteSpace(nextChar))
           break;
        sb.Append(nextChar);
     } while (true);
     while((this.Peek() >= 0) && (char.IsWhiteSpace((char)this.Peek())))
        this.Read();
     if (sb.Length > 0)
        currentWord = sb.ToString();
     else
        currentWord = null;
  }

  public bool hasNextInt()
  {
     if (currentWord == null)
        return false;
     int dummy;
     return int.TryParse(currentWord, out dummy);
  }

  public int nextInt()
  {
     try
     {
        return int.Parse(currentWord);
     }
     finally
     {
        readNextWord();
     }
  }

  public bool hasNextDouble()
  {
     if (currentWord == null)
        return false;
     double dummy;
     return double.TryParse(currentWord, out dummy);
  }

  public double nextDouble()
  {
     try
     {
        return double.Parse(currentWord);
     }
     finally
     {
        readNextWord();
     }
  }

  public bool hasNext()
  {
     return currentWord != null;
  }
}

来源:https://stackoverflow.com/a/722524/1714342

答案 1 :(得分:0)

string Str = txtMemberNr.Text.Trim();

            double Num;

            bool isNum = double.TryParse(Str, out Num);

            if (isNum)
            {
              // CODE IS HERE
            }
            else
            {
                MessageBox.Show("Brugernavn skal kun indeholde tal, prøv igen!", "advarsel", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

这是最简单的方法 - 检查文本框字段中是否有int / string。 我希望你/或有选择解决这个问题的人。

感谢您的帮助 - 但我无法按需使用 - 尽管扫描仪使用得很好..谢谢。

答案 2 :(得分:0)

怎么样

    public static IEnumerable<string> Scanner(this string tgt, char delim)
    {
        var sb = new StringBuilder();
        foreach (var c in tgt)
        {
            if (c == delim)
            {
                yield return sb.ToString();
                sb.Clear();
            }
            else sb.Append(c);
        }
    }