写一个通用的字符串处理方法,它接受4个参数,如:
string _str = "<html><b>ABC</b></b><b>123</b></html>"; //参数1
string _para = "<b>";//参数2
string _para = "</b>";//参数3
int n; //参数4,表示打印第几组的子串。如n=1;打印ABC</b>,2,打印123另一种情况:
string _str = "T1234E89TBFDE89KL";
string _para = "T";
string _para = "E";
int n; //参数4,表示打印第几组的子串。如n=1;打印1234,2,打印BFD方法:
string GetString(string str,string p1,string p2,int n)
{
//?????????????????????
}请各大虾指教!
string _str = "<html><b>ABC</b></b><b>123</b></html>"; //参数1
string _para = "<b>";//参数2
string _para = "</b>";//参数3
int n; //参数4,表示打印第几组的子串。如n=1;打印ABC</b>,2,打印123另一种情况:
string _str = "T1234E89TBFDE89KL";
string _para = "T";
string _para = "E";
int n; //参数4,表示打印第几组的子串。如n=1;打印1234,2,打印BFD方法:
string GetString(string str,string p1,string p2,int n)
{
//?????????????????????
}请各大虾指教!
解决方案 »
- C#/C++初学者的问题又来了
- C# 用windows api 读写HID设备
- System.Threading.Timer的问题
- 如何将DataGridView的光标移动到最后一行?
- c#datagridView显示问题
- 大哥们帮忙看个函数.
- C# winForm 调出Outlook界面并发送指定附件
- 问两个关于更方便地在文本框中提交数据的实现方法
- insert into table2 select field1,field2、、、 from table1 高手请进 急 在线等!!
- 万分感谢,,,,,,请告诉我一个好点的vs.net2003中文版下载地址??
- 为什么WndProc不能处理ShowWindow发的SW_MINIMIZE命令?
- winform的treeview增加删除节点后我怎么保存,显示?应该在库里保存还是XML?哪个要好一点.
{
string strResult = ""; try
{
int intStart=0,intEnd=0,i=0; while(true)
{
intStart = str.IndexOf(p1,intEnd);
intEnd = str.IndexOf(p2,intStart);
if(++i==n)
break;
} strResult = str.Substring(++intStart,intEnd-intStart);
}
catch(Exception ex)
{
strResult = ex.Message;
}
return strResult;
}
{
string strResult = ""; try
{
int intStart=0,intEnd=0,i=0; while(true)
{
intStart = str.IndexOf(p1,intEnd);
intEnd = str.IndexOf(p2,intStart);
if(++i==n)
break;
}
intStart=p1.Length+intStart;
strResult = str.Substring(intStart,intEnd-intStart);
}
catch(Exception ex)
{
strResult = ex.Message;
}
return strResult;
}
using System.Text.RegularExpressions;
namespace FindString
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
string str = "W124#a56@F78k452R89e2"; // 输出“ErKfAw”
string arrstr = string.Empty;
arrstr = GetString(str); string _results = string.Empty;
string _results1 = string.Empty;
string _results2 = string.Empty; string _str = "<html><b>ABC</b></b><b>123</b></html>";
string _para1 = "<b>";
string _para2 = "</b>"; string _str1 = "T1234E89TBFDE89KL";
string _para3 = "T";
string _para4 = "E";
string content = @"<td><div>你好123mjMJ & = - ? / <se>937,4*%^%^% </se>lkjlk</div>m<p>w.o? JKKMKKj & l中国df = tryt</p>ryj % l<div class=n>你不好</div>werjlkjl</td>"; string _para5 = "<div";
string _para6 = "</div>"; _results = GetString(_str,_para1,_para2,0,0);
_results1 = GetString(_str1,_para3,_para4,1,0);
_results2 = GetString(content,_para5,_para6,0,1); // ----------------- print out ------------------------- Console.WriteLine(arrstr);
Console.WriteLine(_results);
Console.WriteLine(_results1);
Console.WriteLine(_results2); //需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,
//仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
string s=" x xx xxx ";
s=Regex.Replace(s.Trim()," +"," ");
Console.WriteLine(s);
} static string GetString(string str,string para1,string para2,int n,int attr)
{ Regex htmlRegex;
Regex htmlRegex1;
MatchCollection mc;
MatchCollection mc1;
string[] div; //content = aRegex.Replace(content, "");
if(attr == 1)
{
htmlRegex = new Regex( para1 +@"[^>]*?>(?<content>[\s\S]*?)" + para2, RegexOptions.IgnoreCase | RegexOptions.Compiled);
mc = htmlRegex.Matches(str);
div = new string[mc.Count];
for (int i=0; i<mc.Count; i++)
{
div[i] = mc[i].Groups["content"].Value;
} }
else
{
htmlRegex1 = new Regex( para1 +@"(?<content>[\s\S]*?)" + para2, RegexOptions.IgnoreCase | RegexOptions.Compiled);
mc1 = htmlRegex1.Matches(str);
div = new string[mc1.Count];
for (int i=0; i<mc1.Count; i++)
{
div[i] = mc1[i].Groups["content"].Value;
} } int y = div.Length;
if(y >n || n == 0)
return div[n];
else if(y == n)
return div[n-1];
else
return "请求输入下标超出范围!"; } static string GetString(string str)
{ string arr = string.Empty;
string arrstr = string.Empty; foreach(char c in str)
{
if(char.IsLetter(c))
{
char temp;
if(char.IsLower(c))
temp = char.ToUpper(c);
else
temp = char.ToLower(c); arr = arr+temp;
}
} for(int j = arr.Length -1; j>=0; j--)
{
arrstr += arr.Substring(j,1);
}
return arrstr;
}
}
}用正则表达式的执行效率比函数循环来判断高多了。