我看到我的字符串是使用Visual Studio对象查看器:
"_profileIconId = 5\n elo"
Run Code Online (Sandbox Code Playgroud)
我需要从开始到换行的地方获取文本.
这是我尝试过的,但IndexOf()方法返回-1,表示找不到换行符.
var stringEx = "_profileIconId = 5\n elo";
var x = stringEx.IndexOf(Environment.NewLine);
stat.Name = tempName.Substring(0,x);
Run Code Online (Sandbox Code Playgroud)
有关如何实现这一目标的任何想法?
Ada*_*ras 16
这是因为Environment.NewLine代表\r\n(回车+换行),而你的源字符串中只有一个换行符.将第二行更改为:
var x = stringEx.IndexOf("\n");
Run Code Online (Sandbox Code Playgroud)
如果你只想要字符串的第一行,你可以这样做:
static string GetFirstLine(string text)
{
using (var reader = new StringReader(text))
{
return reader.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
该StringReader课程为您处理各种换行方案.从MSDN文档:
一行被定义为一个字符序列,后跟一个换行符("\n"),一个回车符("\ r"),或一个回车符后面紧跟一个换行符("\ r \n").
当然,如果你不想要构建一个新StringReader对象的开销(虽然我怀疑它是那么大),你可以自己实现类似的东西:
static string GetFirstLine(string text)
{
int? newlinePos = GetIndex(text, "\r") ?? GetIndex(text, "\n");
if (newlinePos.HasValue)
{
return text.Substring(0, newlinePos.Value);
}
return text;
}
// Not really necessary -- just a convenience method.
static int? GetIndex(string text, string substr)
{
int index = text.IndexOf(substr);
return index >= 0 ? (int?)index : null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26953 次 |
| 最近记录: |