我有句话: “我爱结婚。” 我想得到: “嫁给我吧。” (末尾的点)
我该怎么做?
public static string ReverseWords(string originalString)
{
return string.Join(" ", originalString.Split(' ').Where(x => !string.IsNullOrEmpty(x)).Reverse());
}
答案 0 :(得分:1)
您可以删除最后一个'。分裂之前。
演示:
public static string ReverseWords(string originalString)
{
var input = originalString.EndsWith(".") ? originalString.Remove(originalString.Length - 1) : originalString; // will trim ending '.'
return string.Join(" ", input.Split().Reverse()) + ".";
}
答案 1 :(得分:0)
对于单个句子,请删除该点并在结尾处再次附加。
要删除点,您可以使用TrimEnd
,它将删除字符串末尾的所有点。如果没有,则什么也不会删除:
public static string ReverseWords(string originalString)
{
originalString = originalString.TrimEnd('.');
originalString = string.Join(" ", originalString.Split(' ').Where(x => !string.IsNullOrEmpty(x)).Reverse());
return originalString + ".";
}
对于多句子,您可以在.
处拆分输入字符串,这将为您提供不带点的句子数组。然后,您只需反转每个部分,添加一个点并将它们放回一起(我使用StringBuilder
来做到这一点):
public static string ReverseWordsMultiple(string originalString)
{
String[] sentences = originalString.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
StringBuilder builder = new StringBuilder();
foreach (String senctence in sentences)
{
builder.Append(string.Join(" ", senctence.Split(' ').Where(x => !string.IsNullOrEmpty(x)).Reverse()));
builder.Append(". ");
}
return builder.ToString().TrimEnd();
}
答案 2 :(得分:0)
尝试一下。为了便于阅读,我将其分为几条。
var words = originalString.Split(new [] {' ', '.'}, StringSplitOptions.RemoveEmptyEntries).Reverse();
这会使您的单词相反,并避免了使用Where
子句。然后加入他们与句点:
return string.Join(' ', words) + '.';
答案 3 :(得分:0)
分两个步骤进行操作,首先拆分.
;
return
string.Join(".",
originalString.Split('.')
.ToList()
.Select(s => string.Join(" ", s.Split(' ').Where(x => !string.IsNullOrEmpty(x)).Reverse())));