首页 > 解决方案 > 字符之一匹配的断行

问题描述

我有一个长字符串,这个字符串必须在第 15 个字符或更早的位置中断。

在示例字符串中

这必须在这里打破

第 15 个字符是字母 'k',所以检查它是否是{ ' ' , '.', ',' }. 如果是,则在此位置换行,否则检查前面的字符,直到它可以换行。在示例中,它可以在字符 10 处中断。

只有在 equals 子句中只能中断一个字符时,我的代码才有效:

char break = ' ';

如果我使用一组可能的字符 ( char[] canBreak = { ' ' , '.', ',' };),它就不起作用。

这是我的代码不起作用,我认为问题出在 Equals 中:

char[] canBreak = { ' ' , '.', ',' };
char break = ' ';

while (!fullMsg[breakValue].Equals(canBreak))
{
    breakValue = breakValue - 1;
}

如果我只使用一个char而不是char[]它的工作原理:

char[] canBreak = { ' ' , '.', ',' };
char break = ' ';

while (!fullMsg[breakValue].Equals(break))
{
    breakValue = breakValue - 1;
}

我究竟做错了什么?

标签: c#

解决方案


您应该使用canBreak.Contains(fullMsg[breakValue])来检查您的 char 是否是' ' , '.', ','.

char[] canBreak = { ' ' , '.', ',' };

while (!canBreak.Contains(fullMsg[breakValue]))
{
    breakValue = breakValue - 1;
}

这使用Enumerable.Contains<TSource>(IEnumerable<TSource>, TSource)来自System.Linq.


推荐阅读