一个莫名其妙的问题,求指教(很短的代码,就四行)

我和我的代码互怼 2012-06-14 02:52:19
a="计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = a.Split(new string[] { "计算机名-","网卡-","硬盘-"}, StringSplitOptions.RemoveEmptyEntries);
if (arr[0]=="pc01")
messagebox.show("ok");

结果总是不弹出OK,明明这个值它就是pc01,就是不弹出来,想不通
...全文
223 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieniuniu219 2012-06-15
  • 打赏
  • 举报
回复
string a = "计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = a.Split(new string[] { "计算机名-", "网卡-", "硬盘-" }, StringSplitOptions.RemoveEmptyEntries);
if (arr[0] == "pc01")
MessageBox.Show("ok");

你的代码好像没有问题,我运行过,能出来结果
hztltgg 2012-06-15
  • 打赏
  • 举报
回复
aaa()只能说返回的不是"计算机名-pc01网卡-r8139硬盘-500G"这个值
不知道你这个值是哪儿来的?一般来说,这个值前面或者后面有不可见字符,你可以看一下arr[0][0]到底是什么字符
ADII886614639 2012-06-14
  • 打赏
  • 举报
回复
代码是很短,不过没看懂。
  • 打赏
  • 举报
回复
胡扯吗?所以我才说莫名其妙的问题
这里我再整理一下,重写想得简单点:

aaa()返回"计算机名-pc01网卡-r8139硬盘-500G"这个值,

string[] arr = aaa().Split(new string[] { "计算机名-", "网卡-", "硬盘-" }, StringSplitOptions.RemoveEmptyEntries);

for(int a=1;a<=2;a++)
Console.WriteLine (arr[a]);

结果:
arr[0]=pc1
arr[1]=r8139
arr[2]=500G

这个时候接着再这么写:
if (arr[0]=="pc1")
MessageBox.Show("ok");

结果ok没出来,但值就是pc1,求指教
cheng2005 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

发现问题的关键了
是这样的:

string s="计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = a.Split(new string[] { "计算机名-", "网卡-", "硬盘-" }, StringSplitOptions.RemoveEmptyEntries);
这个如果这么写,可以得到我想要的值

但如果用方法来写,如:
stri……
[/Quote]
送你一句话,纯属胡扯
  • 打赏
  • 举报
回复
呵呵,修复上面一个小小的错误:
string s="计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = s.Split(new string[] { "计算机名-", "网卡-", "硬盘-" }, StringSplitOptions.RemoveEmptyEntries);
这个如果这么写,可以得到我想要的值
  • 打赏
  • 举报
回复
发现问题的关键了
是这样的:

string s="计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = a.Split(new string[] { "计算机名-", "网卡-", "硬盘-" }, StringSplitOptions.RemoveEmptyEntries);
这个如果这么写,可以得到我想要的值

但如果用方法来写,如:
string[] arr = aaa().Split(new string[] { "计算机名-", "网卡-", "硬盘-" }, StringSplitOptions.RemoveEmptyEntries);
我能得到arr里面的各个元素,但就是不能用那个if来测试
这里我说明一下,我的aaa()方法返回的是一个string类型,得到的结果就是"计算机名-pc01网卡-r8139硬盘-500G"这个值
yishan116 2012-06-14
  • 打赏
  • 举报
回复
是不是其他地方写错了啊,设个短点 看一下 arr[0] 值是多少,最能解决问题了
__天涯寻梦 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 4 楼 的回复:

给 if 加对括号
if (arr[0] == "pc01")
{
MessageBox.Show("ok");
}
在 if 上设置断点,单步执行看看有没进去,我运行了 if 成立的

奇怪了,我加了括号还是没出OK
[/Quote]
把代码里
if (arr[0] == "pc01")
整行删掉,复制下面一行粘贴上去
if (arr[0].Equals("pc01"))
另外 pc01 是写死的吗,还是别的地方输入来的?
  • 打赏
  • 举报
回复
更奇怪的又发生了,我单独把代码新建一个工程测试
string a = "计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = a.Split(new string[] { "计算机名-", "网卡-", "硬盘-" }, StringSplitOptions.RemoveEmptyEntries);
if (arr[0] == "pc01")
MessageBox.Show("ok");
结果它出“ok”了
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

给 if 加对括号
if (arr[0] == "pc01")
{
MessageBox.Show("ok");
}
在 if 上设置断点,单步执行看看有没进去,我运行了 if 成立的
[/Quote]
奇怪了,我加了括号还是没出OK
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C# code

void Main()
{
string a="计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = a.Split(new string[] { "计算机名-","网卡-","硬盘-"}, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(arr[0]=="pc01"……
[/Quote]

在控制台下,这是成立的,我这里也成立,但你用个if试试,这个值就不知道变什么了,反正if测试不过
threenewbee 2012-06-14
  • 打赏
  • 举报
回复
也可能是每项数据后其实有一个换行或者看不见的字符。
stonespace 2012-06-14
  • 打赏
  • 举报
回复
是不是大小写的问题,或者pc01打成pco1了?
__天涯寻梦 2012-06-14
  • 打赏
  • 举报
回复
给 if 加对括号
if (arr[0] == "pc01")
{
MessageBox.Show("ok");
}
在 if 上设置断点,单步执行看看有没进去,我运行了 if 成立的
bdmh 2012-06-14
  • 打赏
  • 举报
回复
测试正常
q107770540 2012-06-14
  • 打赏
  • 举报
回复

void Main()
{
string a="计算机名-pc01网卡-r8139硬盘-500G";
string[] arr = a.Split(new string[] { "计算机名-","网卡-","硬盘-"}, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(arr[0]=="pc01"); //True

}
threenewbee 2012-06-14
  • 打赏
  • 举报
回复
string[] arr = a.Split(new string[] { "计算机名-","网卡-","硬盘-"}, StringSplitOptions.RemoveEmptyEntries);
MessageBox.Show(string.Join("\r\n", arr));
输出什么

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧