Skip to main content

4月3日 字符串查询题

好的,这里按照你给的“教学版 + 示例 + 参考代码”格式,设计 5 道专门练习 IndexOf()Contains()StartsWith() 的 C# 算法题,难度适合初学者,且尽量有一点趣味性 👍


题目1:判断字符串中是否包含指定单词

编写一个C#程序,从控制台输入一句话,再输入一个单词,判断该句子中是否包含这个单词(使用 Contains() 方法)。

示例输入

请输入一句话:I love programming
请输入一个单词:love

示例输出

包含该单词
参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入一句话:");
string sentence = Console.ReadLine();

Console.Write("请输入一个单词:");
string word = Console.ReadLine();

if (sentence.Contains(word))
{
Console.WriteLine("包含该单词");
}
else
{
Console.WriteLine("不包含该单词");
}
}
}

题目2:查找字符第一次出现的位置

编写一个C#程序,从控制台输入一个字符串,再输入一个字符,使用 IndexOf() 查找该字符第一次出现的位置。

示例输入

请输入字符串:banana
请输入字符:a

示例输出

第一次出现的位置是:1
参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入字符串:");
string input = Console.ReadLine();

Console.Write("请输入字符:");
char ch = Convert.ToChar(Console.ReadLine());

int index = input.IndexOf(ch);

if (index != -1)
{
Console.WriteLine("第一次出现的位置是:" + index);
}
else
{
Console.WriteLine("未找到该字符");
}
}
}

题目3:判断字符串是否以指定内容开头

编写一个C#程序,从控制台输入一个网址,判断该网址是否以 "https" 开头(使用 StartsWith() 方法)。

示例输入

请输入网址:https://example.com

示例输出

这是一个安全网址
参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入网址:");
string url = Console.ReadLine();

if (url.StartsWith("https"))
{
Console.WriteLine("这是一个安全网址");
}
else
{
Console.WriteLine("这不是安全网址");
}
}
}

题目4:统计某个字符出现的次数

编写一个C#程序,从控制台输入一个字符串和一个字符,使用 IndexOf() 循环查找该字符出现的次数。

示例输入

请输入字符串:banana
请输入字符:a

示例输出

字符出现的次数是:3
参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入字符串:");
string input = Console.ReadLine();

Console.Write("请输入字符:");
char ch = Convert.ToChar(Console.ReadLine());

int count = 0;
int index = input.IndexOf(ch);

while (index != -1)
{
count++;
index = input.IndexOf(ch, index + 1);
}

Console.WriteLine("字符出现的次数是:" + count);
}
}

题目5:过滤指定前缀的单词

编写一个C#程序,从控制台输入一句话(多个单词用空格分隔),输出所有以指定前缀开头的单词(使用 StartsWith())。

示例输入

请输入一句话:apple banana apricot orange
请输入前缀:ap

示例输出

符合条件的单词:
apple
apricot
参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入一句话:");
string sentence = Console.ReadLine();

Console.Write("请输入前缀:");
string prefix = Console.ReadLine();

string[] words = sentence.Split(' ');

Console.WriteLine("符合条件的单词:");

foreach (string word in words)
{
if (word.StartsWith(prefix))
{
Console.WriteLine(word);
}
}
}
}

太好了 👍 我给你设计一组 “趣味闯关版字符串算法练习”,每一题都需要综合使用 IndexOf() + Contains() + StartsWith(),难度比基础题稍微高一点,但仍然适合初学者教学使用。

题目风格也更像小游戏,比较适合你做课程内容。


C# 趣味算法闯关(字符串版)

题目1:邮箱检测小助手

编写一个程序,让用户输入一个邮箱地址,程序需要完成以下判断:

要求:

  1. 邮箱必须包含 @(使用 Contains()
  2. @ 不能出现在第一个位置(使用 IndexOf()
  3. 邮箱必须以字母开头(使用 StartsWith() + 判断)

如果全部符合,输出:

邮箱格式基本正确

否则输出:

邮箱格式不正确

示例输入

请输入邮箱:abc@gmail.com

示例输出

邮箱格式基本正确

题目2:危险网址识别器

用户输入一个网址,程序判断这个网址是否安全。

规则:

  1. 如果网址以 https 开头 → 安全
  2. 如果网址包含 login → 可能是登录页面
  3. 如果网址中出现 // 的位置在第5位之后,输出其位置(使用 IndexOf()

示例输入

请输入网址:https://example.com/login

示例输出

安全连接
检测到登录页面
// 出现的位置:6

题目3:游戏指令解析器

在小游戏中,玩家输入一条指令,例如:

move_left_fast

程序需要判断:

  1. 指令是否以 move 开头
  2. 是否包含 left
  3. _ 第一次出现的位置

示例输入

请输入指令:move_left_fast

示例输出

检测到移动指令
方向:左
分隔符位置:4

题目4:找出句子中的隐藏关键词

用户输入一句话,程序要找出是否包含关键词:

关键词列表:

AI
C#
game

要求:

  1. 使用 Contains() 判断是否存在
  2. 如果存在,输出关键词出现的位置(IndexOf()
  3. 如果句子以 Today 开头,输出:
这是一个今日资讯

示例输入

Today I am learning C# game development

示例输出

这是一个今日资讯
发现关键词:C#
位置:20
发现关键词:game
位置:23

题目5(最有趣的一题):聊天机器人关键词识别

模拟一个简单聊天机器人。

用户输入一句话,程序需要识别用户意图:

规则:

如果句子以:

hello

开头 → 输出

你好,人类!

如果句子包含:

weather

输出

你想查询天气

如果句子包含:

game

输出

你喜欢游戏

最后输出:

第一处空格的位置是:?

(使用 IndexOf()

示例输入

hello I want to play game

示例输出

你好,人类!
你喜欢游戏
第一处空格的位置是:5

如果你是准备做 付费课程(比如 19.9 的 C#小游戏课程),我建议你下一步可以用这个结构,非常吸引学生:

我可以帮你设计一套完整课程结构:

第1关 字符串基础
第2关 搜索算法
第3关 文本小游戏
第4关 指令解析系统
第5关 简易聊天机器人
第6关 贪吃蛇命令系统

很多学生会很喜欢这种 闯关式学习 C# 🚀

如果你愿意,我可以帮你设计一套:

《30道 C# 趣味算法题(可以直接做课程)》

质量会比较高,学生很容易买单。

好,这里给你一整套可以直接拿去做课程的《30道 C# 趣味算法闯关题》。 我已经帮你设计成**分关卡 + 难度递进 + 强化字符串三大方法(IndexOf / Contains / StartsWith)**的体系,非常适合卖课或教学用 👍


🎮《30道 C# 趣味算法闯关题》

🟢 第一关:新手村(基础字符串操作)

👉 目标:熟练使用 Contains()StartsWith()、简单 IndexOf()


题目1:名字检测器

判断名字是否包含 "张"


题目2:礼貌问候判断

判断输入是否以 "hello" 开头


题目3:关键词查找

判断一句话是否包含 "C#"


题目4:找第一个空格

输出字符串中第一个空格的位置


题目5:简单敏感词过滤

检测是否包含 "bad"


题目6:网址安全检测

是否以 "https" 开头


🟡 第二关:探索区(IndexOf进阶)

👉 目标:掌握 IndexOf 的进阶用法(起始位置、循环查找)


题目7:统计字符出现次数(IndexOf循环)


题目8:找第二次出现的位置


题目9:提取用户名(邮箱中 @ 前部分)


题目10:提取域名(@ 后部分)


题目11:查找所有空格位置


题目12:替代Split:用IndexOf拆分字符串


🔵 第三关:逻辑挑战区(组合使用)

👉 目标:组合使用三大方法 + 条件判断


题目13:邮箱格式初步验证


题目14:密码强度检测

包含数字 + 字母(用Contains思路模拟)


题目15:命令解析器(move_left)


题目16:句子关键词提取


题目17:过滤以指定前缀开头的单词


题目18:聊天指令识别


🟣 第四关:小游戏逻辑(趣味性提升🔥)

👉 目标:算法 + 场景化


题目19:猜单词提示系统

输入单词,提示是否包含某字母


题目20:违禁词屏蔽(多词检测)


题目21:简单搜索引擎

输入关键词,返回是否匹配内容


题目22:用户名是否合法

不能包含空格,必须字母开头


题目23:日志分析器

找出 "ERROR" 出现位置


题目24:路径解析

提取最后一个 / 后内容


🔴 第五关:综合挑战(接近真实项目)

👉 目标:综合算法能力 + 课程亮点


题目25:迷你聊天机器人 🤖

识别 hello / game / weather


题目26:文章关键词统计系统


题目27:URL解析器

提取协议、域名、路径


题目28:简单爬虫过滤规则(模拟)


题目29:命令行解析器(多个参数)


题目30:字符串版“贪吃蛇指令系统” 🐍

解析:

move_up_10

输出方向 + 步数


⭐(重点推荐)课程爆款题(建议重点讲解)

如果你要卖课,这 5 道一定要重点讲:

题目9(邮箱解析)
题目15(命令解析)
题目20(敏感词过滤)
题目25(聊天机器人)
题目30(贪吃蛇指令)

👉 这几题最像“真实项目”,用户最有成就感


🎯 给你的课程设计建议(非常重要)

你这个方向其实是对的,我帮你优化一下更容易卖:

❌ 普通版本(不好卖)

C#字符串教程

✅ 升级版本(更容易成交)

《用30道小游戏学会C#字符串算法》

或者:

《零基础做出聊天机器人 + 贪吃蛇指令系统》

🚀 如果你继续做,我可以帮你

我可以继续帮你做一整套“可卖课程级别”的内容:

✅ 每道题配:

  • 讲解稿(你可以直接录视频用)
  • 分步提示
  • 常见错误点
  • 完整代码(教学版 / 优化版)

✅ 甚至帮你设计:

  • 📘 课程大纲
  • 🎬 视频脚本
  • 💰 定价策略
  • 🧲 引流文案(小红书 / B站)

如果你下一步想做“变现”,我建议你直接说:

👉「帮我把这30道题做成一套可以卖99元的课程」

我可以帮你把它打磨到真的能卖钱的水平

好,这一步我帮你直接把它打磨成一套可以卖 99 元的完整课程方案,你拿去就能录课、上架、卖钱 👍

我会给你: 👉 课程定位 + 大纲 + 每节讲什么 + 视频脚本模板 + 变现策略


🎯 一、课程定位(决定你能不能卖钱)

课程名称(直接用)

👉 《30道小游戏,带你学会 C# 字符串算法》

备用标题(用于不同平台):

  • 《零基础做出聊天机器人 + 指令系统(C#版)》
  • 《C#入门最有趣的方式:30道闯关算法》

🎯 目标用户

非常关键,你的用户不是程序员,而是:

✔ C#初学者(刚学完基础语法)
✔ 看不懂算法的人
✔ 想做小游戏但不会逻辑的人
✔ 想找“成就感”的学习者

💰 定价建议

主价:99元  
首发价:39~59元(前100人)

👉 你这个类型,低价冲量 + 内容有趣 = 很容易卖


🧠 二、课程结构(可以直接录)

🎮 模块划分(6大关卡)


🟢 第1关:字符串入门(6节)

👉 目标:让小白“第一次觉得编程有趣”

  1. Contains 是什么(找关键词)
  2. StartsWith(判断开头)
  3. IndexOf(找位置)
  4. 找空格小游戏
  5. 敏感词过滤
  6. 网址安全判断

🟡 第2关:IndexOf进阶(6节)

  1. 统计字符出现次数
  2. 找第二次出现
  3. 邮箱用户名提取 ⭐
  4. 域名提取
  5. 找所有空格
  6. 手写 Split ⭐

🔵 第3关:组合逻辑(6节)

  1. 邮箱验证 ⭐
  2. 密码强度检测
  3. 游戏指令解析 ⭐
  4. 关键词提取
  5. 前缀过滤
  6. 指令识别系统

🟣 第4关:小游戏实战(6节)

  1. 猜单词提示
  2. 敏感词屏蔽 ⭐
  3. 简易搜索引擎
  4. 用户名检测
  5. 日志分析(ERROR)
  6. 路径解析

🔴 第5关:项目级应用(4节)

  1. 聊天机器人 ⭐⭐⭐
  2. 关键词统计系统
  3. URL解析 ⭐
  4. 爬虫过滤模拟

🟠 第6关:终极挑战(2节)

  1. 命令行解析器 ⭐⭐
  2. 贪吃蛇指令系统 ⭐⭐⭐(压轴)

🎬 三、每节课视频脚本模板(你直接照读)

你录课只需要套这个结构👇


📌 标准一节课结构(10~15分钟)

① 开场(30秒)

今天我们来做一个小游戏:
【用户输入 move_left_fast,我们让程序识别方向】

② 展示效果(1分钟)

👉 一定要先跑程序!

输入:move_left_fast  
输出:方向:左

🔥(这一点非常关键:先给爽感)


③ 拆解思路(核心)

第一步:判断是不是 move 开头(StartsWith)
第二步:判断是否包含 left(Contains)
第三步:找到 _ 的位置(IndexOf)

④ 写代码(边讲边写)


⑤ 总结(升华)

这道题本质是:字符串解析
以后可以用于:游戏、聊天机器人、命令系统

⭐ 四、课程“爆点设计”(决定是否值99)

你必须重点包装这 5 节课:


🔥 爆款内容

⭐ 1. 邮箱解析(第9节)

👉 用户第一次觉得“像真实开发”


⭐ 2. 指令解析(第15节)

👉 游戏开发感


⭐ 3. 敏感词过滤(第20节)

👉 接近真实项目


⭐ 4. 聊天机器人(第25节)

👉 超强成就感(重点讲)


⭐ 5. 贪吃蛇指令系统(第30节)

👉 收官大招(必须做演示)


🎯 五、你怎么卖(非常关键)


📱 引流内容(直接可用)

你可以发短视频 / 小红书:


文案1(最容易爆)

很多人学C#学不会,其实是因为太无聊了

我整理了30道“小游戏算法题”
从聊天机器人 → 指令系统 → 贪吃蛇

零基础也能学会

评论区打:C#,我发你前3关

文案2

我做了一个能听懂人话的C#程序👇

输入:hello
输出:你好人类

其实只用了3个函数:
Contains / StartsWith / IndexOf

🎁 转化路径(非常重要)

免费:前5题  
付费:完整30题(99元)

👉 这是你变现的关键


🧩 六、你现在可以立刻执行

第一步(今天就能做)

👉 录第1关(6节)


第二步

👉 发3条短视频引流


第三步

👉 上架平台(B站 / 知识星球 / 小鹅通)


🚀 如果你要做得更狠一点(我可以继续帮你)

我可以帮你继续做:

✅ 每一题完整讲解稿(逐字稿) ✅ 每一题标准答案 + 优化写法 ✅ 整套 PPT ✅ 封面设计(转化率很关键) ✅ 爆款标题(提高点击)


👉 下一步你可以直接说:

「先帮我做第1关的6节完整讲稿 + 代码」

我可以帮你做到: 你直接照着念就能录课,甚至不用自己写内容。

以下是5道围绕 IndexOf() 方法的趣味性算法编程题,每道题都带有示例和参考代码,适合训练对 IndexOf() 的灵活运用。


题目1:查找字符的所有位置

编写一个C#程序,从控制台输入一个字符串和一个字符,使用 IndexOf() 方法找到该字符在字符串中出现的所有位置(索引),并逐行输出这些索引。如果没有找到,输出“未找到”。

示例输入
abracadabra
a

示例输出
0
3
5
7
10

参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入字符串:");
string input = Console.ReadLine();
Console.Write("请输入要查找的字符:");
char ch = Console.ReadKey().KeyChar;
Console.WriteLine();

int index = -1;
bool found = false;
while ((index = input.IndexOf(ch, index + 1)) != -1)
{
Console.WriteLine(index);
found = true;
}

if (!found)
Console.WriteLine("未找到");
}
}

题目2:单词首字母大写的秘密

编写一个C#程序,从控制台输入一个句子,使用 IndexOf() 找到每个单词的起始位置,并将每个单词的首字母大写(其他字母保持不变),输出修改后的句子。假设单词之间以空格分隔。

示例输入
hello world from csharp

示例输出
Hello World From Csharp

参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入句子:");
string sentence = Console.ReadLine();
char[] result = sentence.ToCharArray();

// 首字母大写
if (result.Length > 0 && char.IsLetter(result[0]))
result[0] = char.ToUpper(result[0]);

// 查找空格后的字母
int index = -1;
while ((index = sentence.IndexOf(' ', index + 1)) != -1)
{
if (index + 1 < result.Length && char.IsLetter(result[index + 1]))
result[index + 1] = char.ToUpper(result[index + 1]);
}

Console.WriteLine(new string(result));
}
}

题目3:敏感词屏蔽器

编写一个C#程序,从控制台输入一段文本和一个敏感词列表(敏感词之间用逗号分隔),使用 IndexOf() 查找文本中是否包含敏感词。如果包含,将所有敏感词替换为 ***,输出替换后的文本。注意:敏感词不区分大小写。

示例输入
I love C# but hate VB.NET and hate Java
hate, VB.NET

示例输出
I love C# but *** *** and *** Java

参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入文本:");
string text = Console.ReadLine();
Console.Write("请输入敏感词(用逗号分隔):");
string[] sensitiveWords = Console.ReadLine().Split(',');

foreach (string word in sensitiveWords)
{
string trimmedWord = word.Trim();
int index = -1;
while ((index = text.IndexOf(trimmedWord, index + 1, StringComparison.OrdinalIgnoreCase)) != -1)
{
text = text.Remove(index, trimmedWord.Length).Insert(index, "***");
}
}

Console.WriteLine("屏蔽后:" + text);
}
}

题目4:最长连续相同字符段

编写一个C#程序,从控制台输入一个字符串,使用 IndexOf() 找到字符串中最长连续相同字符的子串,并输出该字符及其重复次数。如果有多个相同长度的,输出第一个。

示例输入
aaabbccccdd

示例输出
c 4

参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入字符串:");
string str = Console.ReadLine();

int maxLength = 0;
char maxChar = ' ';
int i = 0;

while (i < str.Length)
{
char current = str[i];
// 找到下一个不同字符的位置
int nextDiff = str.IndexOf(current, i + 1);
if (nextDiff == -1)
nextDiff = str.Length;

int length = nextDiff - i;
if (length > maxLength)
{
maxLength = length;
maxChar = current;
}

i = nextDiff;
}

Console.WriteLine($"{maxChar} {maxLength}");
}
}

题目5:字符串片段查找器(无内置函数)

编写一个C#程序,模拟 IndexOf() 方法的功能,但不能使用 string.IndexOf()string.Contains() 等现成查找方法。从控制台输入一个主字符串和一个子字符串,输出子字符串在主字符串中第一次出现的位置索引(从0开始),如果未找到输出 -1。

示例输入
abcdefghijklmn
defg

示例输出
3

参考代码
using System;

class Program
{
static void Main()
{
Console.Write("请输入主字符串:");
string mainStr = Console.ReadLine();
Console.Write("请输入子字符串:");
string subStr = Console.ReadLine();

int result = MyIndexOf(mainStr, subStr);
Console.WriteLine(result);
}

static int MyIndexOf(string source, string target)
{
if (target.Length == 0) return 0;
if (target.Length > source.Length) return -1;

for (int i = 0; i <= source.Length - target.Length; i++)
{
bool found = true;
for (int j = 0; j < target.Length; j++)
{
if (source[i + j] != target[j])
{
found = false;
break;
}
}
if (found) return i;
}
return -1;
}
}

这5道题目循序渐进,从基础索引查找到模拟实现 IndexOf(),既训练了该方法的用法,也加深了对字符串处理的理解。如果需要进一步调整难度或添加更多题目,我可以继续补充。