我有一个输入字符串,它被放入结果,然后从那里转换成一个char[],我把第一个字母设为大写字母。我的问题是在 for 语句中,我试图在每个大写字母前放置一个空格。 它无法识别 insert(),因为 char[] 有什么替代品?
我也有一个问题,因为我的第一个字母大写,它会在第一个单词上输入一个空格。我该如何解决这个问题并将其实现到我的代码中。
例子:
“你好”
输出
“你好”
我是否将它插入到一个新的字符串名称中?并返回它而不是输出,例如char[] final 将是最终的返回。
最后,必须在每个大写字母前添加空格,我如何应用只允许 1 个空格的规则?
最佳答案
我会使用正则表达式在每个大写字母前插入空格:
var result = "HelloThere";
Console.WriteLine(Regex.Replace(result, @"\s*(\p{Lu})", " $1"));
请注意,\s*
匹配 0 个或多个空白字符,而 \p{Lu}
匹配任何 Unicode 大写字母。将大写字母捕获到第1组中,并借助替换字符串在大写字母字符串前添加空格。
参见 IDEONE demo
不要忘记添加 using System.Text.RegularExpressions
指令。
这是一个full example使用在静态类中声明的正则表达式:
public static void Main()
{
var result = "HelloThere";
Console.WriteLine(Regexes.rxAddSpaceBeforeCapital.Replace(result, " $1"));
result = "Hello There";
Console.WriteLine(Regexes.rxAddSpaceBeforeCapital.Replace(result, " $1"));
}
public static class Regexes
{
public static readonly Regex rxAddSpaceBeforeCapital = new Regex(@"\s*(\p{Lu})", RegexOptions.Compiled);
}
关于C# 处理空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320687/