已回答 C#中的负索引

黑胡子

成员
已加入
2020年10月27日
留言内容
5
编程经验
Beginner
我想在C#中执行负索引,我已经尝试了几次,但是似乎不起作用。
有人可以帮忙吗?
 
Solution
So you already got a string from Console.ReadLine(). So why go through that crazy conversion from a string to an int, and then back to a string again?

另外,除非计划更改字符串的字符,否则无需将字符串转换为char数组。这应该满足您的需求:
C#:
Console.WriteLine("Enter number = ");
string input = Console.ReadLine();

if (!int.TryParse(input, out int value))
    Console.Error.WriteLine($"{input} is not a number.");

// Look at each character of the input:
for(int i = 0; i < input.Length; i++)
{
    char ch = input[i];
    Console.WriteLine($"input[{i}] is '{ch}'");
}

我仍然不明白您为什么需要...

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,610
地点
弗吉尼亚州切萨皮克
编程经验
10+
So you already got a string from Console.ReadLine(). So why go through that crazy conversion from a string to an int, and then back to a string again?

另外,除非计划更改字符串的字符,否则无需将字符串转换为char数组。这应该满足您的需求:
C#:
Console.WriteLine("Enter number = ");
string input = Console.ReadLine();

if (!int.TryParse(input, out int value))
    Console.Error.WriteLine($"{input} is not a number.");

// Look at each character of the input:
for(int i = 0; i < input.Length; i++)
{
    char ch = input[i];
    Console.WriteLine($"input[{i}] is '{ch}'");
}

我仍然看不到为什么需要负索引。

顺便说一句,如果您知道输入是整数,则可以将其除以10,然后使用取模运算符获得余数以获取最后一位。
 
解决方案

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
欢迎来到论坛。

Please explain where you are attempting this, why you are attempting this, and how you are attempting this, and provide the code you are using and put that code in the provided code tags block : [CODE=csharp] Your code here [/CODE].
 

黑胡子

成员
已加入
2020年10月27日
留言内容
5
编程经验
Beginner
谢谢史密斯,

好的,我是C#和整体编程的新手,我试图解决这个问题,要求我访问用户输入的最后一位。
例如,对和,我需要从数字中获取2并将其存储在变量中,例如为56772。

我认为我必须分享我的代码;
确定用户输入的最后一个值:
int num ;
Console.Writeline("Enter number = ");
num = Convert.ToInt32(Console.ReadLine());

// My intention is to convert the int input first to string before and array
//Don't know if I am right.:)

num = num.ToString();
num = To.Array();


// I'm stuck
 

黑胡子

成员
已加入
2020年10月27日
留言内容
5
编程经验
Beginner
So you already got a string from Console.ReadLine(). So why go through that crazy conversion from a string to an int, and then back to a string again?

另外,除非计划更改字符串的字符,否则无需将字符串转换为char数组。这应该满足您的需求:
C#:
Console.WriteLine("Enter number = ");
string input = Console.ReadLine();

if (!int.TryParse(input, out int value))
    Console.Error.WriteLine($"{input} is not a number.");

// Look at each character of the input:
for(int i = 0; i < input.Length; i++)
{
    char ch = input[i];
    Console.WriteLine($"input[{i}] is '{ch}'");
}

我仍然看不到为什么需要负索引。

顺便说一句,如果您知道输入是整数,则可以将其除以10,然后使用取模运算符获得余数以获取最后一位。
非常感谢跳伞运动员,我是编程新手。请理解我的无知。

再次感谢您,我需要学习很多东西。
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,610
地点
弗吉尼亚州切萨皮克
编程经验
10+
And yeah, if you are using C# 8, you could also get the Python-esque negative indices to get the last character using the ^value syntax. Ex.
C#:
string input = "12345";
char last = input[^1];
Console.WriteLine(last);    // prints out 5
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,610
地点
弗吉尼亚州切萨皮克
编程经验
10+
Be warned that it's only available on newer version of the language (C# 8 or higher). If you are using the .NET Framework 4.8 or lower, or .NET Core 2.1 or lower, or .NET Standard 2.0 or lower, you'll be using C# 7.x. No handy indexing using ^value readily available there.
 

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
无需将字符串转换为char数组。
顺便说一句,为了维护我们的OP,我必须承认我经常在极端疲倦的情况下自己这样做。所有人中的所有人都知道我的工作努力程度,以及为自己的工作而付出的时间。 :) 我的最后一个班次是连续三天,包括我自己的个人/客户项目。在繁重的工作量或巨大的压力下犯下的错误非常简单。我的意思是,对我们所有人来说,很少有错误发生! :凉爽的:
 
最佳 底部