我需要创建一个程序来读取一行文本,其中单词由空格和标点符号分隔,并以相反的顺序显示。文本行也可以包含数字,但如果是,则显示的反向文本必须包含带有单词
的文本问题是,指令说我只能使用.net库中的基本函数,并且使用复杂的函数,例如 - 排序,搜索字符和类似的东西是严格禁止的。这意味着.Contains是不允许的。 some1请帮助我,如何使用基本功能编写?
示例 Galaxy Omega123,由于其偏僻而应变紫色! --->遥远!它到了应有的颜色,紫色菌株银河
string reverseString = "";
for (int j = separatedLine.Length -1; j >= 0; j--)
{
if (separatedLine[j].Contains('0') || separatedLine[j].Contains('1') || separatedLine[j].Contains('2') || separatedLine[j].Contains('3') || separatedLine[j].Contains('4') || separatedLine[j].Contains('5') || separatedLine[j].Contains('6') || separatedLine[j].Contains('7') || separatedLine[j].Contains('8') || separatedLine[j].Contains('9'))
{
separatedLine[j] = "";
}
else
{
reverseString = reverseString + separatedLine[j];
}
}
return reverseString;
答案 0 :(得分:1)
很抱歉,我无法抗拒在这里使用LINQ,尽管问题只是基本的.NET方法。因此,我感觉不像做别人的作业。对于那些关注这个问题的人来说,它仍然有用。
string text = "Here is 1234 number";
string output = string.Join(" ", text.Split(' ')
.Select(s => s.Any(c => Char.IsDigit(c))
? s : new string(s.Reverse().ToArray())));
// output is "ereH si 1234 rebmun"
答案 1 :(得分:0)
典型的解决方案是拆分和加入反向部分:
// Put all possible separators into array
String[] parts = separatedLine.Split(new Char[] {' ', ',', ';'});
// "," is a separator to use
return String.Join(",", parts.Reverse());
e.g。如果
separatedLine = "1 2;3,4"; the outcome is "4,3,2,1"
如果您在使用Split,Linq等方面有所帮助,解决方案可能就是 一种仿真:
List<String> parts = new List<String>();
StringBuilder part = new StringBuilder();
foreach(Char ch in separatedLine)
// Put all possible separators into condition
if ((ch == ' ') || (ch == ',') || (ch == ';')) {
parts.Add(part);
parts.Length = 0;
}
else
part.Add(ch);
parts.Add(part); // <- Do not forget to add the last one
StringBuilder result = new StringBuilder();
for (int i = parts.Count - 1; i >= 0; --i) {
if (i < parts.Count - 1)
result.Add(','); // <- Separator to use
result.Add(parts[i]);
}
return result.ToString();