我创建了一个程序,通过在管道中拆分字符串来计算字符串,字符串是随机生成的,有时空格是需要评估的部分。
HftiVfzRIDBeotsnU uabjvLPC | LstHCfuobtv eVzDUBPn jIRfai
这个字符串两侧的长度相同(管道左侧2 x空格),但是当我必须修剪管道两侧的空间时(我在拆分后这样做),我的问题就来了 是否有某种方法可以确保我只修剪1个单独的空间而不是全部空间。 我的代码到目前为止:
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();
答案 0 :(得分:4)
您有2个选项。
如果管道前后有始终 1个空格,请在{space}|{space}
上拆分。
myInput.Split(new[]{" | "},StringSplitOptions.None);
否则,请使用TrimStart()
&amp; TrimEnd()
使用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];
注意,这里有一些复杂性 - 如果管道周围没有空间,但是最后/第一个字符是合法(数据)空格字符,上面的内容会将其剪掉。你需要更多的逻辑,但希望这会让你开始!
答案 1 :(得分:0)
在删除一些字符后,无法告诉Trim..
方法系列停止。
一般情况下,您需要通过检查Split
之后获得的部件并检查其第一个/最后一个字符和子字符串来获取正确的部分来手动完成。
然而,在你的情况下,有一个更简单的方法 - 分裂也可以将string
作为参数,甚至更多 - 一组字符串:
string[] info = s.Split(new []{ " | " });
// or even
string[] info = s.Split(new []{ " | ", " |", "| ", "|" });
这应该通过简单地将它们作为分隔符的一部分来处理管道|
字符周围的单个空格。
答案 2 :(得分:0)
这是一个字符串扩展,用于修改计数时间的空间,以防万一。
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;
}
}
主要
static void Main(string[] args)
{
string a = "1234 ";
string a1 = a.TrimEnd(1); // returns "1234 "
string a2 = a.TrimEnd(2); // returns "1234"
string a3 = a.TrimEnd(3); // returns "1234 "
string b = " 5678";
string b1 = b.TrimStart(1); // returns " 5678"
string b2 = b.TrimStart(2); // returns "5678"
string b3 = b.TrimStart(3); // returns " 5678"
}