【问题标题】:Trim a few characters in the middle of the string修剪字符串中间的几个字符
【发布时间】:2015-12-12 10:21:22
【问题描述】:

我有一个客户端/服务器程序,客户端将 [进程 ID、主机名、应用程序名称、文件路径] 发送到服务器。现在,它们以一个字符串的形式发送。我为每个变量分配了一个唯一的字符

data = "--++" + "  " + "__-_" +processFileName + " " + "--" +processMachinename + " " + ".." + processID + " " + "_--_" + processPath;

输出将是(下面的示例)

--++  __-_Client_PC (Running) - Microsoft Visual C# 2010 Express --UNICORNV-FA15C8 ..4408 _--_C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\VCSExpress.exe

我尝试过Trim,但它会给我一个错误“对象引用未设置为对象的实例。”

else if (recvDt.Contains("--++"))
{
   string d = "--++";
   recvDt = recvDt.TrimStart(d.ToCharArray());
   this.Invoke(new rcvData(addToOutput));

   if (recvDt.Contains("__-_"))
   {
       string fn = "__-_";
       fileName = recvDt.Trim(fn.ToCharArray());
       this.Invoke(new rcvData(addToGrid));
   }
   if (recvDt.Contains("--"))
   {
        string m = "--";
        machineName = recvDt.Trim(m.ToCharArray());
        this.Invoke(new rcvData(addToGrid));

    }
    if (recvDt.Contains(".."))
    {
        string di = "..";
        processID = recvDt.Trim(di.ToCharArray());
        this.Invoke(new rcvData(addToGrid));

    }
    if (recvDt.Contains("_--_"))
    {
        string p = "_--_";
        filePath = recvDt.Trim(p.ToCharArray());
        this.Invoke(new rcvData(addToGrid));

     }

    }
   }
  Thread.Sleep(1000);
 }

}

public void addToGrid()
{
   if (fileName != null && fileName != "" && machineName != null && machineName != "" && processID != null && processID != "" && filePath != null && filePath != "")
{
   dataGridView1.Rows.Add(fileName, machineName, processID, filePath);
   fileName = null;
   machineName = null;
   processID = null;
   filePath = null;
}

我应该如何删除那些唯一字符并将它们显示在 dataGridView 中?

【问题讨论】:

    标签: c# .net winforms client-server trim


    【解决方案1】:

    您可能需要使用Remove 而不是Trim

    所以你的代码应该是这样的

       if (recvDt.IndexOf("__-_") != -1)
       {
           fileName = recvDt.Remove(recvDt.IndexOf("__-_"));
           this.Invoke(new rcvData(addToGrid));
       }
    

    我猜你明白了

    【讨论】:

    • (recvDt.IndexOf("_-") != -1) 给出了一个错误 NullReferenceException is unhandled "Object reference not set to an instance of an object."
    • 变量 recvDt 似乎为空。尝试删除以下行 recvDt = recvDt.TrimStart(d.ToCharArray()); this.Invoke(new rcvData(addToOutput));
    • 不...那行非常重要..它接收整个消息
    【解决方案2】:

    我不太明白您为什么要这样做(插入唯一且不同的字符串以分隔项目)但在标题中回答您的问题

    在字符串中间剪掉几个字符

    我会使用

    1. String.Indexof(string) 查找您正在搜索的子字符串的索引,并通过从该索引删除到子字符串的末尾来创建一个新字符串
    2. Regex.Replace(string input, string pattern, string replacement) 通过将 pattern 替换为 replacementinput 字符串创建新字符串

    【讨论】:

    • 这只是我将它们分开的方式。您还有其他选择可以将它们分开吗?
    猜你喜欢
    • 2021-07-22
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多