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:邮箱检测小助手
编写一个程序,让用户输入一个邮箱地址,程序需要完成以下判断:
要求:
- 邮箱必须包含
@(使用Contains()) @不能出现在第一个位置(使用IndexOf())- 邮箱必须以字母开头(使用
StartsWith()+ 判断)
如果全部符合,输出:
邮箱格式基本正确
否则输出:
邮箱格式不正确
示例输入
请输入邮箱:abc@gmail.com
示例输出
邮箱格式基本正确
题目2:危险网址识别器
用户输入一个网址,程序判断这个网址是否安全。
规则:
- 如果网址以
https开头 → 安全 - 如果网址包含
login→ 可能是登录页面 - 如果网址中出现
//的位置在第5位之后,输出其位置(使用IndexOf())
示例输入
请输入网址:https://example.com/login
示例输出
安全连接
检测到登录页面
// 出现的位置:6
题目3:游戏指令解析器
在小游戏中,玩家输入一条指令,例如:
move_left_fast
程序需要判断:
- 指令是否以
move开头 - 是否包含
left _第一次出现的位置
示例输入
请输入指令:move_left_fast
示例输出
检测到移动指令
方向:左
分隔符位置:4
题目4:找出句子中的隐藏关键词
用户输入一句话,程序要找出是否包含关键词:
关键词列表:
AI
C#
game
要求:
- 使用
Contains()判断是否存在 - 如果存在,输出关键词出现的位置(
IndexOf()) - 如果句子以
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节)
👉 目标:让小白“第一次觉得编程有趣”
- Contains 是什么(找关键词)
- StartsWith(判断开头)
- IndexOf(找位置)
- 找空格小游戏
- 敏感词过滤
- 网址安全判断
🟡 第2关:IndexOf进阶(6节)
- 统计字符出现次数
- 找第二次出现
- 邮箱用户名提取 ⭐
- 域名提取
- 找所有空格
- 手写 Split ⭐
🔵 第3关:组合逻辑(6节)
- 邮箱验证 ⭐
- 密码强度检测
- 游戏指令解析 ⭐
- 关键词提取
- 前缀过滤
- 指令识别系统
🟣 第4关:小游戏实战(6节)
- 猜单词提示
- 敏感词屏蔽 ⭐
- 简易搜索引擎
- 用户名检测
- 日志分析(ERROR)
- 路径解析
🔴 第5关:项目级应用(4节)
- 聊天机器人 ⭐⭐⭐
- 关键词统计系统
- URL解析 ⭐
- 爬虫过滤模拟
🟠 第6关:终极挑战(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(),既训练了该方法的用法,也加深了对字符串处理的理解。如果需要进一步调整难度或添加更多题目,我可以继续补充。