C#:颠倒句子中的单词
下面的代码如果一个句子中的倒装词,句子中的单词顺序将是相同的,但单词将被倒装C#:颠倒句子中的单词,c#,C#,下面的代码如果一个句子中的倒装词,句子中的单词顺序将是相同的,但单词将被倒装 使用系统; 使用系统文本; 名称空间反向\u字符串 { 班级计划 { 静态void Main(字符串[]参数) { 编写(“输入字符串:”); 字符串S=Console.ReadLine(); 字符串[]sep=S.Split(“”); StringBuilder Wrev=new StringBuilder();//单词反转 StringBuilder Srev=new StringBuilder();//句子颠倒
使用系统;
使用系统文本;
名称空间反向\u字符串
{
班级计划
{
静态void Main(字符串[]参数)
{
编写(“输入字符串:”);
字符串S=Console.ReadLine();
字符串[]sep=S.Split(“”);
StringBuilder Wrev=new StringBuilder();//单词反转
StringBuilder Srev=new StringBuilder();//句子颠倒
对于(int j=0;j=0;i--)
{
附录(9月[j][i]);
}
Srev.Append(Wrev);
Wrev.Clear();
Wrev.追加(“”);
}
控制台写入线(Srev);
}
}
}
对于简单文本,您只需使用
输出
Enter a string: asd sdf dfg fgh
dsa fds gfd hgf
对于复杂的Unicode,您需要更精确地对字符进行分组。但是,您可以利用GetTextElementEnumerator
返回一个枚举数,该枚举数遍历
绳子
给定的
public static IEnumerable<string> ToElements(this string source)
{
var enumerator = StringInfo.GetTextElementEnumerator(source);
while (enumerator.MoveNext())
yield return enumerator.GetTextElement();
}
让我们从定义开始;假设
单词是由字母和撇号组成的非空序列
我们可以借助正则表达式(以及少量Linq-Reverse()
)实现一个简单的解决方案:我们所要做的就是用它的Reverse
d表示替换每个单词
代码:
using System.Linq;
using System.Text.RegularExpressions;
...
private static string WordReverse(string value) =>
Regex.Replace(value ?? "", @"[\p{L}_]+", m => string.Concat(m.Value.Reverse()));
string[] tests = new string[] {
"Text (на русском)",
"Simple test.",
"Another \"text\": punctuation!"
};
Console.Write(string.Join(Environment.NewLine, tests
.Select(test => $"{test,-30} => {WordReverse(test)}")));
Text (на русском) => txeT (ан мокссур)
Simple test. => elpmiS tset.
Another "text": punctuation! => rehtonA "txet": noitautcnup!
演示:
using System.Linq;
using System.Text.RegularExpressions;
...
private static string WordReverse(string value) =>
Regex.Replace(value ?? "", @"[\p{L}_]+", m => string.Concat(m.Value.Reverse()));
string[] tests = new string[] {
"Text (на русском)",
"Simple test.",
"Another \"text\": punctuation!"
};
Console.Write(string.Join(Environment.NewLine, tests
.Select(test => $"{test,-30} => {WordReverse(test)}")));
Text (на русском) => txeT (ан мокссур)
Simple test. => elpmiS tset.
Another "text": punctuation! => rehtonA "txet": noitautcnup!
结果:
using System.Linq;
using System.Text.RegularExpressions;
...
private static string WordReverse(string value) =>
Regex.Replace(value ?? "", @"[\p{L}_]+", m => string.Concat(m.Value.Reverse()));
string[] tests = new string[] {
"Text (на русском)",
"Simple test.",
"Another \"text\": punctuation!"
};
Console.Write(string.Join(Environment.NewLine, tests
.Select(test => $"{test,-30} => {WordReverse(test)}")));
Text (на русском) => txeT (ан мокссур)
Simple test. => elpmiS tset.
Another "text": punctuation! => rehtonA "txet": noitautcnup!
如果你有Unicode字符,考虑这个回答你的问题吗?然后有人提到汉语是没有空格的,这使得单词和字符的概念变得毫无意义。。。