-2

字符串值="2017/3/4"; 我想要 LocalDate 格式的字符串值,如“2017-03-04”如何在不使用任何格式化程序和字符串方法(如 split()、indexof())的情况下将此值转换为我的 localdate。

4

1 回答 1

1

简单的方法:用于String.replace(char oldChar, char newChar)用连字符替换斜杠。请记住,replace这不会更改您的字符串,而是返回一个带有更改的新字符串。然后用于LocalDate.parse(CharSequence text)将新字符串解析为 a LocalDate(aString是 a CharSequence,所以这行得通)。

如果不允许使用String.replace(),请使用String.toCharArray()转换为char[]. 遍历此数组并将每个斜线替换为连字符。然后通过构造函数构建一个新的字符串String(char[] value)。然后如上进行。或者StringBuilder,使用构造函数从原始字符串创建一个StringBuilder(CharSequence seq),遍历它并用连字符替换每个斜线。然后你可以简单地传递StringBuilderintoLocalDate.parse()因为这也是一个CharSequence. 编辑:请注意,最后一种方法根本不直接使用任何 String方法,所以也许这就是预期的(StringBuilder构造函数间接使用String.length()and String.getChars())。

LocalDate.parse()如果由于它隐式使用 a而不允许使用DateTimeFormatter,那么您需要自己从字符串中提取日期、月份和年份。这有点复杂。如果这是必要的并且您需要帮助,请告诉我们,我会解释。

正如@Hugo 所说,如果不允许您直接或间接地使用任何 String方法或任何格式化程序,那么就没有办法。

于 2017-07-22T08:18:56.900 回答