【问题标题】:Uppercase every, every second or every third word in a string字符串中每隔一个、每隔一个或每隔三个单词大写一次
【发布时间】:2014-08-14 13:43:46
【问题描述】:

我只知道ToUpper() 将所有单词都转换为大写,但是如果我只想转换字符串中的每一秒或每三分之一甚至第四个单词等等怎么办?我应该使用什么方法?

【问题讨论】:

  • 亲爱的你用的是什么编码语言?
  • 欢迎来到stackoverflow!你需要更精确。在什么情况下,用什么语言——我们是在说“词”,还是在说字符?
  • @TroyOops,对不起我的错!它是 C#。
  • @davidkonrad 是的,只是实际的“单词”,作为简单的字符串

标签: c# uppercase


【解决方案1】:

您没有指定您的代码语言。

你可以使用简单的循环:

int gap = 2;
// Array indexed from 0, if in your language it starts from 1
// replace 'gap-1' with 'gap'
for (int i = gap-1; i < lengthOfYourString; i+=gap) {
    yourstring[i] = yourstring[i].toupper();
}

这个 sn-p 将使每隔一个字符大写。

此 sn-p 不适用于您的语言,如果您指定编码语言,我将编辑答案

【讨论】:

  • 嗨,我正在用 C# 编写。我正在使用StreamReader streamReader = new StreamReader("Day.txt") 并且文件包含一个简单的句子。我正在尝试将每秒(或其他数字)单词转换为大写。
  • 这在 C# 中不起作用,因为字符串是不可变的,您不能在任何给定地址更改字符串中的值,即 yourstring[i] = BLAH 无效
【解决方案2】:

无论您使用哪种语言,我怀疑是否会有任何内置函数来转换句子中的所有其他单词,因此您需要编写自己的逻辑。

这是一个示例(用 C# 编写),假设句子“单词”被空格分隔,它将大写句子中的每个其他单词

var words = sentence.Split(" ");
var output = new StringBuilder();

foreach(var index = 0; index < words.length; index++) {
    if (index % 2 == 0)
        output.Append(words[index].ToUpper());
    else
        output.Append(words[index]);
}

【讨论】:

  • 停止使用'index%2',你也可以用一个数字来增加你的计数器,而不仅仅是'index++',比如'index+=2',这样你就可以通过删除整个条件来提高性能。
猜你喜欢
  • 2016-07-22
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多