C#中怎么取两个"_"下划线之间的字符串? 比如:37_00195d24c9d6_20110127195405 或者: 123jjj_jdsklajldsj432432432:432432:432_jflajjflsa213 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string[] list=XX.Split('_') 妥妥的 - - 都不对,看清楚问题,是两个下划线之间的字符串!substring只是取从多少位开始然后取多少个字符,显然不行!Split根本就没有这个方法^ string result = Regex.Match(yourStr,@"(?<=_)[^_]+(?=_)").Value; string a = "123jjj_jdsklajldsj432432432:432432:432_jflajjflsa213"; string[] b = a.Split('_'); MessageBox.Show(b[1]); 这样看看行不行,呵呵using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace csdn_1{ class Program { static void Main(string[] args) { string s1 = "123jjj_jdsklajldsj432432432:432432:432_jflajjflsa213";//待处理字符串 string[] arr = s1.Split(new char[] { '_' },StringSplitOptions.RemoveEmptyEntries);//按照‘-分割并去除空 for (int i = 0; i < arr.Length; i++) { Console.WriteLine("第" + (i + 1).ToString() + "个" + arr[i]); } Console.Read(); } }}输出结果第1个123jjj第2个jdsklajldsj432432432:432432:432第3个jflajjflsa213 string str="sdfds_gsfsdfsd_sdfdsfsd";str.Substring(str.IndexOf("_") + 1, str.LastIndexOf("_") - str.IndexOf("_")-1)虽然可以实现你说的情况。但是这个只能实现字符串中只出现两个"_".如果多个的话,只能读第一个到最后一个的值. substring 从下标几开始到某某结束 string[] arr=str.Split(new char[]{'_'})arr[1];否则正则 37_00195d24c9d6_20110127195405 或者: 123jjj_jdsklajldsj432432432:432432:432_jflajjflsa213千万别告诉我,你只是想取7 0,6 2: j j,2 j _之间的字符串,指的是这个?如果要这个值,只能用substring,绝对可以,看你写的算法了至于正则,貌似强人已经给出了,最不懂的东西 - - 他的格式不是固定的,有可能字符串多,有可能少,所以用substring不行! string str="sdfds_gsfsdfsd_sdfdsfsd";str.Substring(0, str.LastIndexOf("_") - str.IndexOf("_")-1) string str="sdfds_gsfsdfsd_sdfdsfsd";str.Substring(0, str.LastIndexOf("_")1) var s = "37_00195d24c9d6_20110127195405" s = s.Substring(s.LastIndexOf("_") + 1); 楼主 你有没有搞错哦?!!!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方式的 } 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个数组,你需要的是第二个数组 } 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) 取出最后一个下划线之前全部的字符!string str = "37_00195d24c9d6_20110127195405";string ss = str.Substring(0, str.LastIndexOf("_"));ss结果:37_00195d24c9d6,你的意思就是这个吧?真不懂和标题完全不搭边,如果还不对,请楼下的理解达人解决问题 少的话可以用最古老的方法:如下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)试试看! //取第一个‘_’到最后一个‘_’之间 string s1 = System.Text.RegularExpressions.Regex.Match(str, "(?<=_).*(?=_)").Value; //取第一个字符到最后一个‘_’之间 string s2 = System.Text.RegularExpressions.Regex.Match(str, "^.*(?=_)").Value; 求高手赐教,关于出现:最匹配的重载方法具有一些无效参数的问题。 自动登录(有验证码)的问题 In TestComplete,How to get the log information after tested in C # ? 急救怎样判断窗体中已存在此类型控件 对dataset数据修改后再更新数据库概念非常迷惑. 新手学习c# 如何截取html代码中的一些关键内容并保存到数据库中 急!哪有 .net 的组件下载啊? 未将对象引用设置到对象的实例????高手请进 C#中最大化窗体的属性是什么? 关于C#读取二进制文件,以及怎么处理数据,给点意见。 C#如何获取OutLook联系人资料信息?
string[] b = a.Split('_');
MessageBox.Show(b[1]);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace csdn_1
{
class Program
{
static void Main(string[] args)
{
string s1 = "123jjj_jdsklajldsj432432432:432432:432_jflajjflsa213";//待处理字符串
string[] arr = s1.Split(new char[] { '_' },StringSplitOptions.RemoveEmptyEntries);//按照‘-分割并去除空
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine("第" + (i + 1).ToString() + "个" + arr[i]);
}
Console.Read();
}
}
}
输出结果
第1个123jjj
第2个jdsklajldsj432432432:432432:432
第3个jflajjflsa213
str.Substring(str.IndexOf("_") + 1, str.LastIndexOf("_") - str.IndexOf("_")-1)
虽然可以实现你说的情况。但是这个只能实现字符串中只出现两个"_".如果多个的话,只能读第一个到最后一个的值.
arr[1];
否则正则
_之间的字符串,指的是这个?
如果要这个值,只能用substring,绝对可以,看你写的算法了
至于正则,貌似强人已经给出了,最不懂的东西 - -
str.Substring(0, str.LastIndexOf("_") - str.IndexOf("_")-1)
str.Substring(0, str.LastIndexOf("_")1)
{
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方式的 }
{
//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个数组,你需要的是第二个数组
}
取“BBB”的方法:
str.Substring(str.IndexOf("_")+1, str.LastIndexOf("_") - str.IndexOf("_")-1)
取“AAA_BBB”的方法
str.Substring(0, str.LastIndexOf("_") - str.IndexOf("_")-1)
string ss = str.Substring(0, str.LastIndexOf("_"));
ss结果:37_00195d24c9d6,你的意思就是这个吧?
真不懂和标题完全不搭边,如果还不对,请楼下的理解达人解决问题
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)
试试看!
//取第一个‘_’到最后一个‘_’之间
string s1 = System.Text.RegularExpressions.Regex.Match(str, "(?<=_).*(?=_)").Value;
//取第一个字符到最后一个‘_’之间
string s2 = System.Text.RegularExpressions.Regex.Match(str, "^.*(?=_)").Value;