C#如何存储用户输入字符串到数组执行搜索及解决代码返回异常
问题根因
你的代码无法正常运行是三个硬问题导致的:
- 返回值类型不匹配:方法签名声明返回
string类型,实际尝试返回的是char[]字符数组,类型不一致会直接触发编译错误,程序根本无法启动运行。 - 存在冗余重复逻辑:C#中的
string本身就支持按索引访问、逐字符遍历,你写的for循环逐位复制字符的操作完全没有必要。 - Web API序列化坑:就算你把方法返回值改成
char[],框架默认的JSON序列化规则会把字符数组转成单个字符组成的字符串数组,和你预期的连续字符返回格式完全不符。
正确实现方案
如果你确实需要把用户输入的字符串转成字符数组用于后续搜索操作,直接调用字符串内置的ToCharArray()方法即可,不需要手写循环复制,参考可直接运行的代码:
public class CellPhoneMessagingController : ApiController { [HttpGet] [Route("api/CellPhoneMessaging/{code}")] public IHttpActionResult ProcessUserCode(string code) { // 入参空校验,避免空值触发运行时异常 if (string.IsNullOrWhiteSpace(code)) { return BadRequest("传入的code参数不能为空"); } // 一行代码完成字符串转字符数组,替代手写的for循环逻辑 char[] charStorage = code.ToCharArray(); // 后续搜索逻辑可直接在此处编写,示例:判断字符数组中是否存在数字 bool hasNumber = charStorage.Any(c => char.IsDigit(c)); // 返回结构化结果,避免序列化格式异常 return Ok(new { OriginalInput = code, CharArray = charStorage, HasNumber = hasNumber }); } }
初学者提示:如果你的搜索需求是匹配子串、判断关键词存在这类常见操作,完全不需要转成字符数组,直接调用字符串自带的方法即可,比如
code.Contains("目标关键词")就能直接完成匹配,性能比手动遍历数组更优。
内容的提问来源于stack exchange,提问作者Saransh Lakra
相关产品推荐
相关产品推荐

