c# - C# 定位 * 在由管道分隔的字符串中的位置
问题描述
我必须找到一个 * 在它可能根本没有的位置,第一个位置 | 第二名 | 第 3 位。
位置由管道分隔 |
因此
没有 * 通配符将是
`ABC|DEF|GHI`
然而,虽然这可能是 1 种情况,但其他 3 种情况是
string testPosition1 = "*|DEF|GHI";
string testPosition2 = "ABC|*|GHI";
string testPosition3 = "ABC|DEF|*";
我收集到的不是我应该使用 IndexOf ,但似乎我应该合并 | (管道)知道位置(不仅仅是长度,因为这三个地方的值可能是长的或短的。所以我只想知道 * 是在第一、第二还是第三位置(或者根本没有)
因此我正在这样做,但我不知道它是在第一个还是第二个管道之前
if(testPosition1.IndexOf("*") > 0)
{
// Look for pipes?
}
解决方案
有很多方法可以解决这个问题。最易读的可能实际上只是以困难的方式进行(即扫描字符串以找到第一个'*'
字符,跟踪您在此过程中'|'
看到的字符数)。
也就是说,这可能是类似的可读性和更简洁的:
int wildcardPosition = Array.IndexOf(testPosition1.Split('|'), "*");
如果未找到,则返回-1
,否则返回从 0 开始的索引,用于分隔字符串的哪个段'|'
包含通配符字符串。
这仅在通配符恰好是单字符字符串时才有效"*"
。如果您需要支持其他变体,您仍然需要拆分字符串,但是您可以循环遍历数组以查找您需要的任何标准。
推荐阅读
- jquery - 滚动时我的导航栏出现问题(我的导航栏中的文本是透明的)
- sql - oracle,从字符串中提取多个子字符串
- macos - 可可访问PHContentEditingInput.fullSizeImageURL?
- c++ - list.erase 中的 Lambda 表达式
- c++ - 尝试打开win32窗口时变量不兼容
- python - numpy - 有效地过滤选择具有随机约束的随机样本
- c - C: 如何使用 sizeof 分割一个字符?
- php - 使用 PHP 编辑 xml - 最后插入
- amazon-web-services - AWS Lex - 从用户问题中选择查询
- scala - 在 Scala 中遍历