能否按不在引号内的空格对字符串进行split?

JerrySabrina 2010-02-04 02:11:39
举个例子
say "hello world" 按照空格的split,之后的结果为
say
"hello
world"

我希望的结果是
say
hello world
该怎么写这个split函数?正则表达式?or what?
...全文
297 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qoushui 2010-10-29
  • 打赏
  • 举报
回复
这个正则表达式还是有问题,如果是多个引号就不行了,应该改为((?<=\\s\").*?(?=\"))|(\\w+)

say "hello world" "i see you"
JerrySabrina 2010-02-04
  • 打赏
  • 举报
回复
很牛嘿,正则表达式真神奇
CsToD 2010-02-04
  • 打赏
  • 举报
回复
引用Microsoft.VisualBasic.dll

using System.IO;
using Microsoft.VisualBasic.FileIO;


public string[] Split(string source)
{
StringReader sr=new StringReader(source);
TextFieldParser tfp = new TextFieldParser(sr);
tfp.SetDelimiters(" ");
return tfp.ReadFields();
}
qlzf11140820 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jerrysabrina 的回复:]
这个正则表达式,好像不对的吧。。
[/Quote]是可以的
string str=null;
string strs = "say \"hello world\"";
Regex r = new Regex("((?<=\\s\").*(?=\"))|(\\w+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(strs))
{
foreach (Capture c in m.Captures)
{
str += c.Value;
}
}
JerrySabrina 2010-02-04
  • 打赏
  • 举报
回复
这个正则表达式,好像不对的吧。。
波导终结者 2010-02-04
  • 打赏
  • 举报
回复
((?<=\s").*(?="))|(\w+)
JerrySabrina 2010-02-04
  • 打赏
  • 举报
回复
good idea,我试试哈
wzp144650 2010-02-04
  • 打赏
  • 举报
回复
这样思路不知道可不可以,先用正则把文本中的"[\w\W]*"部分取出来,然后把其中的空格替换成一个特殊字符,之后用空格split,然后再把特殊字符还原回来

110,538

社区成员

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

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

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