C# 如何在拆分字符串后精确修剪1个空格
我制作了一个程序,通过在管道上拆分字符串来计算字符串,字符串是随机生成的,有时需要计算的部分是空格 HftiVfzRIDBeotsnU uabjvLPC | LSTHCFOUOBTV eVzDUBPn jIRfai 这个字符串的两边长度相同(管道左侧有2倍的空格),但我的问题出现在我必须修剪管道两侧的空格时(我在拆分后执行此操作) 有没有办法确保我只修剪一个空格而不是全部。 到目前为止,我的代码是:C# 如何在拆分字符串后精确修剪1个空格,c#,string,split,trim,C#,String,Split,Trim,我制作了一个程序,通过在管道上拆分字符串来计算字符串,字符串是随机生成的,有时需要计算的部分是空格 HftiVfzRIDBeotsnU uabjvLPC | LSTHCFOUOBTV eVzDUBPn jIRfai 这个字符串的两边长度相同(管道左侧有2倍的空格),但我的问题出现在我必须修剪管道两侧的空格时(我在拆分后执行此操作) 有没有办法确保我只修剪一个空格而不是全部。 到目前为止,我的代码是: foreach (string s in str) { int bugC
foreach (string s in str)
{
int bugCount = 0;
string[] info = s.Split('|');
string testCase = info[0].TrimEnd();
char[] testArr = testCase.ToCharArray();
string debugInfo = info[1].TrimStart();
char[] debugArr = debugInfo.ToCharArray();
int arrBound = debugArr.Count();
for (int i = 0; i < arrBound; i++)
if (testArr[i] != debugArr[i])
bugCount++;
if (bugCount <= 2 && bugCount != 0)
Console.WriteLine("Low");
if (bugCount <= 4 && bugCount != 0)
Console.WriteLine("Medium");
if (bugCount <= 6 && bugCount != 0)
Console.WriteLine("High");
if (bugCount > 6)
Console.WriteLine("Critical");
else
Console.WriteLine("Done");
}
Console.ReadLine();
foreach(str中的字符串s)
{
整数错误计数=0;
字符串[]信息=s.Split(“|”);
字符串testCase=info[0].TrimEnd();
char[]testArr=testCase.ToCharArray();
字符串debugInfo=info[1].TrimStart();
char[]debugArr=debugInfo.ToCharArray();
int arrbind=debugArr.Count();
for(int i=0;i 如果(bugCount没有办法告诉Trim..
methods系列在删除一些字符后停止
在一般情况下,您需要手动执行此操作,方法是检查分割后获得的零件,并检查其第一个/最后一个字符和子字符串以获得正确的零件
但是,在您的情况下,有一种更简单的方法-拆分还可以将字符串
作为参数,甚至更多-一组字符串:
string[] info = s.Split(new []{ " | " });
// or even
string[] info = s.Split(new []{ " | ", " |", "| ", "|" });
只需将管道|
字符周围的单个空格作为分隔符的一部分来处理。没有办法告诉修剪..
方法系列在删除一些字符后停止
在一般情况下,您需要手动执行此操作,方法是检查分割后获得的零件,并检查其第一个/最后一个字符和子字符串以获得正确的零件
但是,在您的情况下,有一种更简单的方法-拆分还可以将字符串
作为参数,甚至更多-一组字符串:
string[] info = s.Split(new []{ " | " });
// or even
string[] info = s.Split(new []{ " | ", " |", "| ", "|" });
只需将管道周围的单个空格作为分隔符的一部分,就可以处理它们。您有两个选项
如果管道前后始终有1个空格,请在{space}{space}
上拆分
myInput.Split(new[]{" | "},StringSplitOptions.None);
否则,不要使用TrimStart()
&trimsend()
使用SubString
var split = myInput.Split('|');
var s1 = split[0].EndsWith(" ")
? split[0].SubString(0,split[0].Length-1)
: split[0];
var s2 = split[1].StartsWith(" ")
? split[1].SubString(1) // to end of line
: split[1];
请注意,这里有一些复杂性-如果管道周围没有空格,但最后/第一个字符是合法的(数据)空格字符,上面的字符会将其截断。您需要更多的逻辑,但希望这能让您开始!您有2个选项
如果管道前后始终有1个空格,请在{space}{space}
上拆分
myInput.Split(new[]{" | "},StringSplitOptions.None);
否则,不要使用TrimStart()
&trimsend()
使用SubString
var split = myInput.Split('|');
var s1 = split[0].EndsWith(" ")
? split[0].SubString(0,split[0].Length-1)
: split[0];
var s2 = split[1].StartsWith(" ")
? split[1].SubString(1) // to end of line
: split[1];
请注意,这里有一些复杂性-如果管道周围没有空格,但最后/第一个字符是合法的(数据)空格字符,则上述字符会将其截断。您需要更多的逻辑,但希望这会让您开始!这是一个字符串扩展,用于修剪计数时间的空格,以防万一
public static class StringExtension
{
/// <summary>
/// Trim space at the end of string for count times
/// </summary>
/// <param name="input"></param>
/// <param name="count">number of space at the end to trim</param>
/// <returns></returns>
public static string TrimEnd(this string input, int count = 1)
{
string result = input;
if (count <= 0)
{
return result;
}
if (result.EndsWith(new string(' ', count)))
{
result = result.Substring(0, result.Length - count);
}
return result;
}
/// <summary>
/// Trim space at the start of string for count times
/// </summary>
/// <param name="input"></param>
/// <param name="count">number of space at the start to trim</param>
/// <returns></returns>
public static string TrimStart(this string input, int count = 1)
{
string result = input;
if (count <= 0)
{
return result;
}
if (result.StartsWith(new string(' ', count)))
{
result = result.Substring(count);
}
return result;
}
}
这是一个字符串扩展,用于修剪计数时间的空间,以防万一
public static class StringExtension
{
/// <summary>
/// Trim space at the end of string for count times
/// </summary>
/// <param name="input"></param>
/// <param name="count">number of space at the end to trim</param>
/// <returns></returns>
public static string TrimEnd(this string input, int count = 1)
{
string result = input;
if (count <= 0)
{
return result;
}
if (result.EndsWith(new string(' ', count)))
{
result = result.Substring(0, result.Length - count);
}
return result;
}
/// <summary>
/// Trim space at the start of string for count times
/// </summary>
/// <param name="input"></param>
/// <param name="count">number of space at the start to trim</param>
/// <returns></returns>
public static string TrimStart(this string input, int count = 1)
{
string result = input;
if (count <= 0)
{
return result;
}
if (result.StartsWith(new string(' ', count)))
{
result = result.Substring(count);
}
return result;
}
}
如果要清除管道符号前后的空格,请使用TrimStart
和trimsend
假设您在|
上拆分,只需将字符串的子字符串从[1]取到[len-1]?你能显示代码生成的结果和想要的结果吗?我不明白TrimEnd
或TrimStart
怎么会在这里引起问题。@sharpstudent如果在string@Sinatr如果您想使用c,我希望在第1节中实际数据的末尾或第2节中实际数据的开头有一个空格清除管道符号前后的空格,然后使用TrimStart
和trimsend
假设您在|
上拆分,只需将字符串的子字符串从[1]取到[len-1]?你能显示代码生成的结果和想要的结果吗?我不明白TrimEnd
或TrimStart
怎么会在这里引起问题。@sharpstudent如果在string@Sinatr当空格位于第1节中实际数据的末尾或第2节中实际数据的开头时,我认为是的,我同意我只认为我可以在一个字符上拆分,这在很多方面都有帮助。是的,我同意。我只认为我可以在一个字符上拆分,这在很多方面都有帮助。似乎我误解了什么,当我尝试使用方法1时,我得到了“无法从”字符串转换[]'至'char'@Claudi-见更新,我忘了你需要传递StringSplitOptions
似乎我误解了什么,当我尝试使用方法1时,我得到“无法从'string[]转换为'char'@Claudi-见更新,我忘了你需要传递StringSplitOptions