我有一个客户端/服务器程序,客户端将[进程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中显示它们?
答案 0 :(得分:0)
您可能需要使用Remove
代替Trim
所以你的代码看起来应该是这样的
if (recvDt.IndexOf("__-_") != -1)
{
fileName = recvDt.Remove(recvDt.IndexOf("__-_"));
this.Invoke(new rcvData(addToGrid));
}
我猜你有这个想法
答案 1 :(得分:0)
我不太明白你为什么这么做(在单独的项目中插入唯一且不同的字符串)但在标题中回答你的问题
修剪字符串中间的几个字符
我要么用
String.Indexof(string)
查找要搜索的子字符串的索引,并通过从该索引中删除子字符串的末尾来创建新字符串Regex.Replace(string input, string pattern, string replacement)
通过将input
替换为pattern
replacement
字符串创建新字符串
醇>