怎么取出两个字符之间的内容

stillmelody 2011-10-31 11:19:29
str="123456(12-16)123123"
字符串位数不确定。怎么取出括号里的12跟16
...全文
208 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
WangxiaoluWang 2011-10-31
  • 打赏
  • 举报
回复
正则…
小龙卷卷风 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mulk0207 的回复:]
用indexOf先找到(,然后在用SubString在截取也可以吧
[/Quote]

比较同意9楼的想法。
萧炎 2011-10-31
  • 打赏
  • 举报
回复
我再介绍一种方法吧
string str = "123456(12-16)123123";
string str1=str.Remove(0, str.IndexOf("("));
MessageBox.Show(str1.Remove(str1.IndexOf(")")+1,(str1.Length-str1.IndexOf(")"))-1));
sdl2005lyx 2011-10-31
  • 打赏
  • 举报
回复
两次分割就可以了:

string str="123456(12-16)123123";
string [] split = str.Split(new Char[] {'(' , ')'});

string [] split2 = split[1].Split(new Char[] {'- '});


split2 就是你要的结果12,16
mulk 2011-10-31
  • 打赏
  • 举报
回复
用indexOf先找到(,然后在用SubString在截取也可以吧
挨踢直男 2011-10-31
  • 打赏
  • 举报
回复
        string str = "123456(12-16)123123";
Regex regex = new Regex(@"\(([^\-]+)\-([^\)]+)\)");
Match m = regex.Match(str);
while (m.Success)
{
Response.Write("<br/>");
Response.Write(m.Groups[1].Value);
Response.Write("<br/>");
Response.Write(m.Groups[2].Value);
m = m.NextMatch();
}
happyoneeve 2011-10-31
  • 打赏
  • 举报
回复

string str = "123456(12-16)123123";

int v1 = str.IndexOf("(");
int v2 = str.IndexOf("-");
int v3 = str.IndexOf(")");

string str1 = str.Substring(v1 + 1, v2 - v1 - 1);
string str2 = str.Substring(v2 + 1, v3 - v2 - 1);
  • 打赏
  • 举报
回复
呃。。。上面的还有括号要处理掉。。。。。反正就是这么个写法
  • 打赏
  • 举报
回复

string tempStr = "123456(12-16)123123";//sr.ReadToEnd();
string pattern = @"[^(]+(\([^)]+\))[\s\S]*";
tempStr = Regex.Replace(tempStr, pattern, "$1");//输出:(12-16)

  • 打赏
  • 举报
回复
string input;
System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(input, "\(\d*-\d*\)");
foreach (System.Text.RegularExpressions.Match m in mc)
{
string[] splitArray = m.Value.Split('-');
//数组随便你怎么操作啦
}
shashengduguzhe 2011-10-31
  • 打赏
  • 举报
回复
string[] sTemp0,sTemp1;
sTrmp0=str.split('(');
sTemp1=sTemp0[1].split(')');
结果:
sTemp1[0]="12-16";
stillmelody 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 starfd 的回复:]
规则。。。。规则。。。。
知道规则可以写正则
[/Quote]
规则就是一定有(*-*)
  • 打赏
  • 举报
回复
规则。。。。规则。。。。
知道规则可以写正则
Bullatus 2011-10-31
  • 打赏
  • 举报
回复
string str1=Regex.Match(str,@"\(\d+\-\d+\)").Value;
string[] array=Regex.Split(str1.Substring(1,str1.Length-2),@"\-");
xiongxyt2 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 happyoneeve 的回复:]
string str = "123456(12-16)123123";

int v1 = str.IndexOf("(");
int v2 = str.IndexOf("-");
int v3 = str.IndexOf(")");

string str1 = str.Substring(v1 + 1, v2 - v1 - 1);
string str2 ……
[/Quote]
IndexOf定位比较直观,正则也不错
轻狂小疯 2011-10-31
  • 打赏
  • 举报
回复
indexof 比较好啊
小龙卷卷风 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 return_false 的回复:]
C# code


string tempStr = "123456(12-16)123123";//sr.ReadToEnd();
string pattern = @"[^(]+(\([^)]+\))[\s\S]*";
tempStr = Regex.Replace(tempStr, pattern, "$1");//输出:(12-16……
[/Quote]
正则不太懂,顶下。
jimh 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aspwebchh 的回复:]

C# code
string str = "123456(12-16)123123";
Regex regex = new Regex(@"\(([^\-]+)\-([^\)]+)\)");
Match m = regex.Match(str);
while (m.Success)
{
Re……
[/Quote]
顶顶顶
Daqing 2011-10-31
  • 打赏
  • 举报
回复
           string inputs = "123456(12-16)123123";
Match mat = Regex.Match(inputs, @"((?<data1>[\d\w]*)\-(?<data2>[\d\w]*))", RegexOptions.Singleline);
Console.WriteLine(string.Concat("1:", mat.Groups["data1"].Value, " 2:", mat.Groups["data2"].Value));//1:12 2:16
根据这里括号内可以是数字或者字符,单是数字,把\W去掉即可。

110,567

社区成员

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

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

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