【问题标题】:substring in Java to Substring in C# [closed]Java中的子字符串到C#中的子字符串[关闭]
【发布时间】:2014-06-23 20:03:57
【问题描述】:

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

key是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 ());  

【问题讨论】:

  • “不工作”是什么意思?
  • System.ArgumentOutOfRangeException: 索引和长度必须引用字符串中的位置
  • 阅读这两种方法的文档。他们不做同样的事情。

标签: java c# substring


【解决方案1】:

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

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.

您似乎假设他们采用相同的论点。

【讨论】:

  • 是的,我是因为第一个工作正常
  • @user2007843,您需要查看带有两个整数参数的那个。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

    请注意您的key.Length - 6 >= 2,否则它会抛出ArgumentOutOfRangeException

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多