C#中怎么取两个"_"下划线之间的字符串?

heren5201314 2011-01-28 10:37:15
比如:37_00195d24c9d6_20110127195405 或者: 123jjj_jdsklajldsj432432432:432432:432_jflajjflsa213
...全文
829 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
gghlkk 2011-01-28
  • 打赏
  • 举报
回复

//取第一个‘_’到最后一个‘_’之间
string s1 = System.Text.RegularExpressions.Regex.Match(str, "(?<=_).*(?=_)").Value;
//取第一个字符到最后一个‘_’之间
string s2 = System.Text.RegularExpressions.Regex.Match(str, "^.*(?=_)").Value;
missgd152 2011-01-28
  • 打赏
  • 举报
回复
少的话可以用最古老的方法:如下
function a()
{
var a=window.document.getElementById("t").value;
var b=a.substring(5,8);
alert(b);
}
只取第一个和最后一个下划线之间的,不计较中间有多少个下划线的话可以用下面这个:
string str="sdfds_gsfsdfsd_sdfdsfsd";
str.Substring(str.IndexOf("_") + 1, str.LastIndexOf("_") - str.IndexOf("_")-1)
试试看!
瑾安 2011-01-28
  • 打赏
  • 举报
回复
其实很简单,楼上的很多位说的都行的,楼主你试下就知道了
maycxd 2011-01-28
  • 打赏
  • 举报
回复
取出最后一个下划线之前全部的字符!

string str = "37_00195d24c9d6_20110127195405";
string ss = str.Substring(0, str.LastIndexOf("_"));
ss结果:37_00195d24c9d6,你的意思就是这个吧?
真不懂和标题完全不搭边,如果还不对,请楼下的理解达人解决问题
wangoqoq 2011-01-28
  • 打赏
  • 举报
回复
string str="AAA_BBB_CCC";
取“BBB”的方法:
str.Substring(str.IndexOf("_")+1, str.LastIndexOf("_") - str.IndexOf("_")-1)
取“AAA_BBB”的方法
str.Substring(0, str.LastIndexOf("_") - str.IndexOf("_")-1)
yucuihaimeng 2011-01-28
  • 打赏
  • 举报
回复


static void Main(string[] args)
{
//1使用SubString方式的
Console.WriteLine( GetSubString("37_00195d24c9d6_20110127195405", '_'));
//2使用Split方式的
Console.WriteLine( GetSplitString("37_00195d24c9d6_20110127195405", '_'));
Console.Read();

}


static string GetSubString(string strOrignal, char a)
{
int start = strOrignal.IndexOf(a);//你的第一个‘_’的索引
int end = strOrignal.LastIndexOf(a);//你的最后一个‘_’的索引
return strOrignal.Substring(start+1, end - start);//这个从start开始,长度为end-start
}

static string GetSplitString(string strOrignal,char a)
{
return strOrignal.Split(a)[1];//因为你有两个'_',所以使用Split得到的是3个数组,你需要的是第二个数组
}
ZHENNIUBILE 2011-01-28
  • 打赏
  • 举报
回复
19楼,威武!
heren5201314 2011-01-28
  • 打赏
  • 举报
回复
5楼的兄弟? 有没有得到从第一个字符到最后一个下划线之间正则?
yucuihaimeng 2011-01-28
  • 打赏
  • 举报
回复
楼主 你有没有搞错哦?!!!String的方法,你都看完了么?!!!

第一种使用SubString:

static string GetSubString(string strOrignal, char a)
{
int start = strOrignal.IndexOf(a);//你的第一个‘_’的索引
int end = strOrignal.LastIndexOf(a);//你的最后一个‘_’的索引
return strOrignal.Substring(start, end - start);//这个从start开始,长度为end-start
}

第二种使用Split:

static string GetSplitString(string strOrignal,char a)
{
return strOrignal.Split(a)[1];//因为你有两个'_',所以使用Split得到的是3个数组,你需要的是第二个数组
}



static void Main(string[] args)
{
//1使用SubString方式的
GetSubString("37_00195d24c9d6_20110127195405", '_');
//2使用Split方式的

}

Fry_cici 2011-01-28
  • 打赏
  • 举报
回复
var s = "37_00195d24c9d6_20110127195405"

s = s.Substring(s.LastIndexOf("_") + 1);
wulinshe 2011-01-28
  • 打赏
  • 举报
回复
string str="sdfds_gsfsdfsd_sdfdsfsd";
str.Substring(0, str.LastIndexOf("_")1)
wulinshe 2011-01-28
  • 打赏
  • 举报
回复
string str="sdfds_gsfsdfsd_sdfdsfsd";
str.Substring(0, str.LastIndexOf("_") - str.IndexOf("_")-1)
heren5201314 2011-01-28
  • 打赏
  • 举报
回复
他的格式不是固定的,有可能字符串多,有可能少,所以用substring不行!
heren5201314 2011-01-28
  • 打赏
  • 举报
回复
我想取出最后一个下划线之前全部的字符!
maycxd 2011-01-28
  • 打赏
  • 举报
回复
37_00195d24c9d6_20110127195405 或者: 123jjj_jdsklajldsj432432432:432432:432_jflajjflsa213

千万别告诉我,你只是想取7 0,6 2: j j,2 j
_之间的字符串,指的是这个?
如果要这个值,只能用substring,绝对可以,看你写的算法了
至于正则,貌似强人已经给出了,最不懂的东西 - -
wulinshe 2011-01-28
  • 打赏
  • 举报
回复
正则啊正则.好想学.
wuyq11 2011-01-28
  • 打赏
  • 举报
回复
string[] arr=str.Split(new char[]{'_'})
arr[1];
否则正则
wangting0613 2011-01-28
  • 打赏
  • 举报
回复
substring 从下标几开始到某某结束
wulinshe 2011-01-28
  • 打赏
  • 举报
回复
string str="sdfds_gsfsdfsd_sdfdsfsd";
str.Substring(str.IndexOf("_") + 1, str.LastIndexOf("_") - str.IndexOf("_")-1)
虽然可以实现你说的情况。但是这个只能实现字符串中只出现两个"_".如果多个的话,只能读第一个到最后一个的值.
sardineany 2011-01-28
  • 打赏
  • 举报
回复
逍遥抢我分
加载更多回复(8)

110,535

社区成员

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

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

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