字符串值=" 2017/3/4&#34 ;; 我希望我的字符串值为LocalDate格式,如" 2017-03-04" 如何在不使用任何格式化程序和字符串方法(如split(),indexof())的情况下将此值转换为我的localdate。
答案 0 :(得分:1)
简单方法:使用String.replace(char oldChar, char newChar)
用连字符替换斜杠。请记住,replace
不会改变您的字符串,而是返回包含更改的新字符串。然后使用LocalDate.parse(CharSequence text)
将新字符串解析为LocalDate
(String
是CharSequence
,这样就行了。)
如果您不允许使用String.replace()
,请使用String.toCharArray()
转换为char[]
。遍历此数组并用连字符替换每个斜杠。然后通过String(char[] value)
构造函数构建一个新字符串。然后按上述步骤操作。或者,使用StringBuilder
构造函数从原始字符串创建StringBuilder(CharSequence seq)
,迭代它并用连字符替换每个斜杠。然后,您只需将StringBuilder
传递给LocalDate.parse()
,因为这也是CharSequence
。编辑:请注意,最后一种方法根本不直接使用任何 String
方法,所以这可能是预期的(StringBuilder
构造函数间接使用{{1} }和String.length()
)。
如果您不允许使用String.getChars()
,因为它隐含使用LocalDate.parse()
,那么您需要自己从字符串中提取日期,月份和年份。这有点复杂。如果这是必要的,你需要帮助,请告诉我们,我会解释。
正如@Hugo所说,如果你不允许直接或间接地使用任何 DateTimeFormatter
方法或任何格式化程序,那么就没有办法了。
在任何情况下,请自己编写代码(我希望你一直这样写,但你的问题并不清楚)。 Stack Overflow不是代码编写服务,你从复制某人为你编写的代码中学到的东西(或很少)。