Java中的子字符串到C#中的子字符串

时间:2014-06-23 20:03:58

标签: java c# substring

我在Java中有2个子字符串语句需要转换为C#。第一个似乎是工作,但第二个不是那么多,我不知道为什么。

密钥是一串长度为7-18个字符的可变长度

首先在Java中,然后在C#中。 X可以是1-12个字符。

String X = key.substring(0,key.length()-6);
System.out.println("\nX: " + X.toUpperCase());

Console.WriteLine ("\nDLN: " + (key.Substring (0, key.Length - 6).ToUpper ()));

第二个,其中Y是X

之后的前2个字符
String Y = key.substring(key.length()-6, key.length()-4);
System.out.println("\nY : " + Y.toUpperCase());

//NOT WORKING    
Console.WriteLine("\nY: " + (key.Substring(key.Length -6, key.Length -4)).ToUpper ());  

3 个答案:

答案 0 :(得分:2)

如果您查看Java vs C#的文档,您会发现C#' s Substring采用起始索引和长度,而Java采用起始索引和结束索引。

爪哇

substring(int beginIndex, int endIndex)

C#

Substring(Int32, Int32)     Retrieves a substring from this instance. The substring starts at a specified character position and has a specified length.

你好像假设他们采取相同的论点。

答案 1 :(得分:1)

Substring的第二个参数不是您想要的最后一个字符的索引,它是您想要的数字

因此,如果您想要X之后的前两个字符,请使用计数2。

key.Substring(key.Length -6, length: 2)

答案 2 :(得分:-1)

在C#中,String.Substring()方法的第二个参数不是endIndex,因为它在Java中,而是返回的子字符串的长度。因此,您应该使用它:

key.Substring(key.Length - 6, 2)

请注意key.Length - 6 >= 2,否则会引发ArgumentOutOfRangeException