2017-08-26 189 views
0

仍然在我的项目上工作,并希望有更多的帮助。这是我的问题:我有一个字符串在CompanyID可能充满“”空间(从ASCII十六进制文本派生)。我尝试过的一些代码不会检测到空格(可能是因为有许多十六进制字符会返回空格,而且它们的值不同),代码(图B)返回所有空格的值。我想要做的是搜索任何字母/数字的字符串“CompanyID”。如果是的话,我需要textBox10.Text = CompanyID;如果没有,我需要输出到文本框,如图A所示。如果ASCII字符串包含字母或数字,然后返回文本

图。 - 答:

else textBox10.Text = "No Value!"; 
if (val.Contains("No Value!")) textBox10.ForeColor = Color.Orange; 

图。 B:

// COMPANY ID 
{ 
BinaryReader br3 = new BinaryReader(File.OpenRead(OpenFileDialog1.FileName)); 
       br3.BaseStream.Position = 0x110; 
       Char[] charArray = br3.ReadChars(16); 
       string CompanyID = new string(charArray); 
       textBox10.ForeColor = Color.Black; 
       textBox10.Text = CompanyID; 
       br3.Close(); 
       { 
        // CODE REPLACEMENT 
        string val = CompanyID; 
        textBox10.ForeColor = Color.Black; 
        foreach (char c in CompanyID) 
        { 
         if (Char.IsDigit(c)) textBox10.Text = CompanyID; 
         else textBox10.Text = "No Value!"; 
         if (val.Contains("No Value!")) textBox10.ForeColor = Color.Orange; 
        } 
       } 

任何帮助,将不胜感激。感谢您的时间!

+0

“返回不同值的空格” - 应该告诉你,你没有使用ASCII。那么,“ASCII十六进制文本”也不是ASCII?你处理得当吗?十六进制字符用于表示字节。字节表示编码文本。没有文字,但编码文字。您默认使用['new BinaryReader(...)'](https://msdn.microsoft.com/en-us/library/2k01zeat(v = vs.110)]中Unicode字符集的UTF-8编码。 ASPX)。 (这很可能是正确的,特别是因为在过去的三十年里,ASCII通常不被用于文本文件。)[我看不到十六进制涉及到哪些内容。] –

回答

0

我用下面的代码来解决我的问题。有人建议使用IsWhiteSapce来检测字符串中是否有任何内容(即使该内容已被删除),它一直在为我工作。感谢那些回答谁的人。

// DESCRIPTION 
      { 
       BinaryReader br7 = new BinaryReader(File.OpenRead(OpenFileDialog1.FileName)); 
       br7.BaseStream.Position = 0x1c8; 
       Char[] charArray = br7.ReadChars(40); 
       string Desc = new string(charArray); 
       textBox11.Text = Desc; 
       if (textBox11.Text.All(c => char.IsWhiteSpace(c))) 
       { 
        textBox11.ForeColor = Color.Orange; 
        textBox11.Text = "No Value!"; 
       } 
       else textBox11.ForeColor = Color.Black; 

       br7.Close(); 
相关问题