抱歉,这对我来说很难解释。
我想获取最后一个新行字符的索引,该字符放在C#
应用程序中的不同字符之前。
例如,我想要放在\n
Hi
的索引
"\n\n\n\n\nHi\n\n\n"
此外,我希望\n
之后放置Hi
的第一个索引。
我知道String.LastIndexOf有多种使用方法。我只是不知道我是否可以或如何使用它来获得我想要的东西。
修改
这是我到目前为止所做的。
int firstIndex=myString.IndexOf("\n")==0 ? 0 : -1;
int secondIndex=myString.Text.Trim().IndexOf("\n");
我想知道是否有更好或更标准的方法来做到这一点。
答案 0 :(得分:1)
您可以使用Regex.Matches查找带图案的项目。一个简单的方法可以
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
var input = "\n\nHi\n\n\nTest\nTest";
var matches = Regex.Matches(input, "\\n");
for (int index = 0; index < matches.Count - 1; index++)
{
var match = matches[index];
if (match.Index + 1 != matches[index + 1].Index)
{
Console.WriteLine("Last Match found at " + match.Index);
Console.WriteLine("Next first Match found after last item at " + matches[index + 1].Index);
}
}
Console.WriteLine("Last Match found at " + matches[matches.Count - 1].Index);
}
}
将输出打印为
Last Match found at 1
Next first Match found after last item at 4
Last Match found at 6
Next first Match found after last item at 11
Last Match found at 11
答案 1 :(得分:0)
有很多方法可以给这只猫上皮。这是一个
string input = "\n\n\n\n\nHi\n\n\n";
string [] split = input.Split('\n');
int prevN = -1, nextN = -1;
for (int i = 0; i < split.Length; i++) {
if (!String.IsNullOrEmpty(split[i])) {
prevN = i - 1;
nextN = i + split[i].Length;
break;
}
}
Console.WriteLine(prevN + "-" + nextN);
打印&#34; 4-7&#34;。这是对的吗?
答案 2 :(得分:0)
您可以尝试以下内容
static void Main(string[] args)
{
int index = "\n\n\n\n\nHi\n\n\n".IndexOf("hi", StringComparison.OrdinalIgnoreCase);
Console.WriteLine("\n\n\n\n\nHi\n\n\n".Split('i')[1].IndexOf("\n") + index);
Console.WriteLine("\n\n\n\n\nHi\n\n\n".Split('i')[1].LastIndexOf("\n") + index);
}