我有一个字符串,其中包含许多文本,其中有子字符串,如..
1 . 1 To Airtel Mobile
1 03/MAR/2013 16:06:31 9845070641 05:44 1.80 **
2 04/MAR/2013 10:00:29 9845096416 00:14 0.30 **
3 04/MAR/2013 20:02:35 9845096416 08:12 2.70 **
4 06/MAR/2013 21:20:03 9632176702 00:37 0.30 **
5 09/MAR/2013 11:40:45 9845444042 01:29 0.60 **
6 11/MAR/2013 18:59:08 9900054971 01:14 0.60 **
7 12/MAR/2013 13:43:01 9686568009 03:57 1.20 **
8 13/MAR/2013 17:38:18 7760995045 00:48 0.30 **
9 21/MAR/2013 09:26:20 9845444043 02:47 0.90 **
10 21/MAR/2013 11:02:39 9845444043 00:15 0.30 **
11 22/MAR/2013 18:00:00 9845096416 00:11 0.30 **
Total 25:28 9.30
现在根据我的要求,我必须阅读这个子串“1.1 Airtel Mobile”之后的行到这个子串“Total 25:28 9.30”。这是我在c#中的代码,它将检查“1.1”对于Airtel Mobile“存在于字符串中。现在根据我的要求如何读取指定子字符串的行,即”Total 25:28 9.30“。 这是我在C#中的代码..
if(currentText.Contains("1 . 1 To Airtel Mobile"))
{
using (StringReader reader = new StringReader(currentText))
{
//
}
答案 0 :(得分:3)
我已经创建了一个示例项目,并使用您给定的输入测试代码,并给出了您需要的结果。
string strStartString = "1 . 1 To Airtel Mobile";
string strEndString = "Total 25:28 9.30";
if (strRawData.StartsWith(strStartString) && strRawData.EndsWith(strEndString))
{
int startIndex = strRawData.IndexOf("1 . 1 To Airtel Mobile");
int endIndex = strRawData.IndexOf("Total 25:28 9.30");
int whereReadingStarts = strStartString.Length;
int whereReadingStops = endIndex - whereReadingStarts;
string strDesiredOutput = strRawData.Substring(whereReadingStarts, whereReadingStops);
textBox1.Text = strDesiredOutput;
}
string strStartString = "1 . 1 To Airtel Mobile";
string strEndString = "Total 25:28 9.30";
if (strRawData.StartsWith(strStartString) && strRawData.EndsWith(strEndString))
{
int startIndex = strRawData.IndexOf("1 . 1 To Airtel Mobile");
int endIndex = strRawData.IndexOf("Total 25:28 9.30");
int whereReadingStarts = strStartString.Length;
int whereReadingStops = endIndex - whereReadingStarts;
string strDesiredOutput = strRawData.Substring(whereReadingStarts, whereReadingStops);
textBox1.Text = strDesiredOutput;
}
答案 1 :(得分:1)
我想这应该对你有用
if (currentText.Contains("1 . 1 To Airtel Mobile") && currentText.Contains("Total"))
{
int startPosition = currentText.IndexOf("1 . 1 To Airtel Mobile");
int endPosition = currentText.IndexOf("Total");
string result = currentText.Substring(startPosition, endPosition-startPosition);
// result will contain everything from and up to the Total line
}
答案 2 :(得分:0)
您可以在此处使用字符串拆分功能来处理呼叫详细信息。
var txt ="1 03/MAR/2013 16:06:31 9845070641 05:44 1.80 **";
string [] split = txt.Split(new Char [] {' '});
//现在你有了
split[0] = 1;
split[1]="03/MAR/2013";
split[2]="16:06:31";
split[3]="9845070641";
split[4]="05:44";
split[5]="1.80";
split[6]="*";
根据您的数据做任何您想做的事情。你需要一些更多的逻辑来处理除了有电话细节之外的行
答案 3 :(得分:0)
假设您已经拥有所有需要的文本,您可以执行以下操作:
var lines = str.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
现在只需跳过lines
中的第一项和最后一项。
答案 4 :(得分:0)