用户输入: "我有3个苹果"
输出:
" I"
"具有"
" 6"
"苹果"
我的C#:
static void Main(string[] args)
{
Console.WriteLine("Enter a string...");
string delimeter = " ";
string input = Console.ReadLine();
string[] output = input.Split(Convert.ToChar(delimeter));
foreach (var substring in output)
{
Console.WriteLine(substring);
}
Console.Read();
}
我需要帮助才能走上正轨。我的代码只使用空格作为分隔符来区分句子。
答案 0 :(得分:1)
试一试
foreach (var substring in output)
{
int value;
if(int.TryParse(substring, out value)){
value = value * 2;
input = input.Replace(substring, value.ToString());
}
}
Console.WriteLine(input);
首先需要检查您的spitted字符串是否为数字,如果它是2,则将其替换为输入变量以获得预期的输出。
答案 1 :(得分:1)
你可以尝试跟进吗?
static void Main(string[] args)
{
Console.WriteLine("Enter a string...");
string delimeter = " ";
string input = Console.ReadLine();
var result = System.Text.RegularExpression.Regex.Replace(input,"\d+", match=>(int.Parse(match.Value)*2).ToString(CultureInfo.InvariantCulture));
Console.WriteLine(result);
Console.Read();
}
答案 2 :(得分:0)
这是一个算法,例如。
// an extension method to check if a string is all decimal digits
public static class StringHelper {
public static bool IsNumeric(this string str)
{
if (str.IsNullOrWhiteSpace()) return false;
return str.All(char.IsNumber);
}
}
...
static void Main(string[] args)
{
Console.WriteLine("Enter a string...");
string delimeter = " ";
string input = Console.ReadLine();
string[] output = input.Split(Convert.ToChar(delimeter));
foreach (var substring in output)
{
if (substring.IsNumeric())
{
substring = (int.Parse(substring) * 2).ToString();
}
Console.Write(substring);
}
Console.WriteLine();
Console.Read();
}
请注意,代码仅检查子字符串是否仅包含十进制数字。例如,它没有准备好处理带小数点的任何数字,并且它也不是完全安全的。代码未经过测试,仅用于示例目的。
我故意在不使用正则表达式的情况下显示代码,但如果您对此感兴趣,请查看其他答案。