大家写过这样一个字符串处理方法吗?

macroyan 2004-03-25 10:17:13
我想写一个字符串的方法,如下格式:GetToken("参数1#参数2#参数3","#"),
即几个参数用分隔符(如"#")分割开,然后取参数:
parm1 = class1.GetToken("参数1#参数2#参数3","#"),
parm2 = class1.GetToken("参数1#参数2#参数3","#"),
parm3 = class1.GetToken("参数1#参数2#参数3","#"),
取完之后分别将参数1、参数2、参数3传递给parm1、parm2、parm3。
...全文
41 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sumtec 2004-03-25
  • 打赏
  • 举报
回复
没事不要找麻烦,没有必要用正则,就用string.split好了。

如果你只是想在程序里面传参数,那么也可以考虑ArrayList的形式。如果你是想把某些东西以简单文本的方式保存在文件或者数据库当中,那么你的办法也可以,不过如果字符串当中可能有分隔符(#),那么就不能够用Split了,各个参数合并到一块的时候需要转义,解开之前需要反转义。转义和反转义需要你自己写,不过相当简单:

// 合并
s = s.Replace("/", "//"); // 把转义符转义
s = s.Replace("#", "/#"); // 把分割符转义
t =...
t =...
s = s + "#" + t;

// 分解
string[] getParams(string Params)
{
ArrayList arr = new ArrayList();
string[] result;
char ch;
int i, c;
StringBuilder sb = new StringBuilder();

c = Params.Length;
for (i = 0; i < c; i++)
{
ch = Params.Chars(i);
switch (ch)
{
case '/':
i++;
sb.Append(Params.Chars(i);
break;
case '#':
arr.Add(sb.ToString());
sb.Length = 0;
break;
default:
sb.Append(ch);
break;
}
}
arr.Append(sb.ToString());
return (string[]) arr.ToArray(typeof(string));
}

试一下看看?
chfb 2004-03-25
  • 打赏
  • 举报
回复
你这种只是一个字符的用string.split()比较好
如果是用多个字符分割就用正则表达式

http://www.aspcool.com/lanmu/browse1.asp?ID=961&bbsuser=csharp

macroyan 2004-03-25
  • 打赏
  • 举报
回复
老兄,如何用正则表达式啊??
chfb 2004-03-25
  • 打赏
  • 举报
回复
string[]parm= string.split('#');
既然以#作为分割符参数里应该不会有"#"
所以string.split()还是不错的
只是string.split()的参数是字符数组
匹配上好像有问题

建议采用
System.Text.RegularExpressions
里面的正则表达式操作来完成
macroyan 2004-03-25
  • 打赏
  • 举报
回复
brightheroes(闭关|学习ASP.NET中~) 说的有道理!
marvelstack 2004-03-25
  • 打赏
  • 举报
回复
同意楼上的,这个不难。
米克贝瑞 2004-03-25
  • 打赏
  • 举报
回复
高招,ArrayList是个好动动
brightheroes 2004-03-25
  • 打赏
  • 举报
回复
不要这么费劲了,假如说你的参数中包含"#"你又如何处理?一截取还不截取错了?
你可以用一个ArrayList来做嘛
using System.Collections;
ArrayList al = new ArrayList();
al.Add(parm1);
al.Add(parm2);
......
取出来的时候
parm1 = al[0];
parm2 = al[1];
ms44 2004-03-25
  • 打赏
  • 举报
回复
我记得好象MS本来就提供这样的
八爪鱼-杭州 2004-03-25
  • 打赏
  • 举报
回复
string[]parm= string.split('#');
string parm1=parm[0];
string parm2=parm[1];
string parm3=parm[2];

110,535

社区成员

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

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

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