嗨,我是 c# 的新手,我正在尝试自己编写 trimleft 函数
Hi i'm a newbie in c# and i'm trying to write trimleft function by myself
public static string TrimLeft(string word)
{
int numberOfLetters = 0;
foreach (var c in word)
{
numberOfLetters++;
}
int start = 0, end = numberOfLetters - 1;
string b = "";
for (int i = 0; i < numberOfLetters; i++)
{
if (!char.IsWhiteSpace(word[i]))
{
start = i;
b += word[i];
}
}
Console.WriteLine("Trimmed version: {0}", b);
return word;
}
我正在尝试自己编写 trimleft 函数 我不太明白我是如何做正常的 trim 版本的,但是我如何做 trimleft 版本的它不使用任何内置字符串。子字符串等函数
这是一个较短的版本,它已经过测试并且可以正常工作
public static string TrimLeft(string word)
{
string result = "";
bool trimDone = false;
foreach (var chr in word)
{
if (chr == ' ' && !trimDone) continue;
result = result + chr;
trimDone = true;
}
Console.WriteLine("Trimmed version: {0}", result);
return result;
}
测试
var word = " abc def !";
word = TrimLeft(word);
结果
abc def !
有人可以建议一个字符串生成器,但据我所知,它超出了项目的范围
还有另一个版本,但我认为它也超出了范围
public static string TrimLeft(string word)
{
var i = 0;
foreach (var chr in word)
{
if (chr != ' ')
{
if ( i > 0)
{
Console.WriteLine($"Trimmed version:{word[i..]}");
return word[i..];
}
else break;
}
i++;
}
Console.WriteLine($"Nothing To Trim : {word}");
return word;
}
找到输入字符串中第一个非 space 字符的索引,然后将其余字符复制到结果字符串并 return 它。
第一个非space字符可以用循环找到,复制操作也可以用循环完成,如果求解时不允许IndexOf
或Substring
这个问题。字符串生成器可用于有效地构建结果字符串。
另一种方法是:
public static string TrimLeft(string word)
{
int i = 1;
foreach (var chr in word)
{
if (chr != ' ') break;
i++;
}
i--;
return word[i..];
}
参见:Fiddle
public static string TrimLeft(string word)
{
int numberOfLetters = 0;
foreach (var c in word)
{
numberOfLetters++;
}
int start = 0, end = numberOfLetters - 1;
string b = "";
for (int i = 0; i < numberOfLetters; i++)
{
if (!char.IsWhiteSpace(word[i]))
{
start = i;
b += word[i];
}
}
Console.WriteLine("Trimmed version: {0}", b);
return word;
}
我正在尝试自己编写 trimleft 函数 我不太明白我是如何做正常的 trim 版本的,但是我如何做 trimleft 版本的它不使用任何内置字符串。子字符串等函数
这是一个较短的版本,它已经过测试并且可以正常工作
public static string TrimLeft(string word)
{
string result = "";
bool trimDone = false;
foreach (var chr in word)
{
if (chr == ' ' && !trimDone) continue;
result = result + chr;
trimDone = true;
}
Console.WriteLine("Trimmed version: {0}", result);
return result;
}
测试
var word = " abc def !";
word = TrimLeft(word);
结果
abc def !
有人可以建议一个字符串生成器,但据我所知,它超出了项目的范围
还有另一个版本,但我认为它也超出了范围
public static string TrimLeft(string word)
{
var i = 0;
foreach (var chr in word)
{
if (chr != ' ')
{
if ( i > 0)
{
Console.WriteLine($"Trimmed version:{word[i..]}");
return word[i..];
}
else break;
}
i++;
}
Console.WriteLine($"Nothing To Trim : {word}");
return word;
}
找到输入字符串中第一个非 space 字符的索引,然后将其余字符复制到结果字符串并 return 它。
第一个非space字符可以用循环找到,复制操作也可以用循环完成,如果求解时不允许IndexOf
或Substring
这个问题。字符串生成器可用于有效地构建结果字符串。
另一种方法是:
public static string TrimLeft(string word)
{
int i = 1;
foreach (var chr in word)
{
if (chr != ' ') break;
i++;
}
i--;
return word[i..];
}
参见:Fiddle