字符串值="2017/3/4"; 我想要 LocalDate 格式的字符串值,如“2017-03-04”如何在不使用任何格式化程序和字符串方法(如 split()、indexof())的情况下将此值转换为我的 localdate。
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)
,遍历它并用连字符替换每个斜线。然后你可以简单地传递StringBuilder
intoLocalDate.parse()
因为这也是一个CharSequence
. 编辑:请注意,最后一种方法根本不直接使用任何 String
方法,所以也许这就是预期的(StringBuilder
构造函数间接使用String.length()
and String.getChars()
)。
LocalDate.parse()
如果由于它隐式使用 a而不允许使用DateTimeFormatter
,那么您需要自己从字符串中提取日期、月份和年份。这有点复杂。如果这是必要的并且您需要帮助,请告诉我们,我会解释。
正如@Hugo 所说,如果不允许您直接或间接地使用任何 String
方法或任何格式化程序,那么就没有办法。