c# - 字符之一匹配的断行
问题描述
我有一个长字符串,这个字符串必须在第 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;
}
我究竟做错了什么?
解决方案
您应该使用canBreak.Contains(fullMsg[breakValue])
来检查您的 char 是否是' ' , '.', ','
.
char[] canBreak = { ' ' , '.', ',' };
while (!canBreak.Contains(fullMsg[breakValue]))
{
breakValue = breakValue - 1;
}
这使用Enumerable.Contains<TSource>(IEnumerable<TSource>, TSource)
来自System.Linq
.
推荐阅读
- three.js - 将 MeshStandardMaterial 复制到 ShaderMaterial 时如何渲染 PMREM 环境贴图
- entity-framework - 在 select LINQ 子句和方法中创建新对象有什么区别
- join - 关系代数-fullouterjoin
- sql-server - 使用变量表将多条记录插入/合并到一条记录中以打印在明信片的两面
- android - 具有约束布局的 NestedScrollView 作为子项不滚动
- c# - IIS 中的 ASP.NET .NET 4.5 应用程序定期崩溃,我无法找出原因
- php - codeigniter JOIN返回错误的ID
- game-physics - Godot:如何让 RigidBody2D 在移动时移动它的孩子?
- python - 创建交互式散景图+使用for循环到多线图
- flutter - 将 ListView 元素的 CheckBox 的位置传递给 Flutter 中的 onChanged 回调