在Java中,我有一个像这样的字符串:
" content ".
Run Code Online (Sandbox Code Playgroud)
将String.trim()移除这些侧面上的所有空间或每个空间仅一个空间?
JDK的String.trim()方法很幼稚,只删除ascii控制字符.
Apache Commons的StringUtils.strip()略胜一筹,但使用的是JDK的Character.isWhitespace(),它不会将不间断的空格识别为空格.
那么在Java中修剪字符串的最完整,Unicode兼容,安全和正确的方法是什么?
顺便说一句,是否有比commons-lang我应该使用的更好的库?
我需要清理来自各种Microsoft Office套件应用程序(Excel,Access和Word)的字符串(复制/粘贴),每个应用程序都有自己的编码集.
我正在使用json_encode进行调试,以便能够看到每个编码的字符.
我能用str_replace清理到目前为止我发现的所有内容(\ r \n),但是用\ u00a0我没有运气.
$string = 'mail@mail.com\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0;mail@mail.com'; //this is the output from json_encode
$clean = str_replace("\u00a0", "",$string);
Run Code Online (Sandbox Code Playgroud)
收益:
mail@mail.com\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0;mail@mail.com
Run Code Online (Sandbox Code Playgroud)
那是完全一样的; 它完全忽略了\ u00a0.
有没有解决的办法?此外,我觉得我正在重新发明轮子,是否有一个功能/类完全剥离每个可能编码的可能的字符?
____编辑____
在前两个回复后,我需要澄清我的示例是否有效,因为它是json_encode的输出,而不是实际的字符串!
这就是我所拥有的:
public void readFile(String fileToOpen) {
File myFile = new File(fileToOpen);
try {
Scanner inFile = new Scanner(myFile);
while (inFile.hasNext()) {
String input = inFile.nextLine();
String [] readString = input.split(",");
for (int i = 0; i < readString.length; i++) {
readString[i].trim();
}
System.out.println(readString[0] + readString[1] + readString[2] + readString[3] + readString[4] + readString[5]);
Point myPoint = new Point(Integer.parseInt(readString[1]), Integer.parseInt(readString[2]));
if (readString[0].toLowerCase().equals("man")) {
Man myMan = new Man(myPoint, Integer.parseInt(readString[3]), Integer.parseInt(readString[4]), readString[5]);
this.myList.add(myMan);
} else if (readString[0].toLowerCase().equals("woman")) {
Woman myWoman = new …Run Code Online (Sandbox Code Playgroud) 我学会了string.trim()删除前导和尾随空格.但在我的情况下它不起作用我尝试下面的代码但输出是前导和尾随空格.但我的期望是没有前导和尾随空间的文本.这是我的代码.
String s = " Hello Rais ";
s += " Welcome to my World ";
s.trim( );
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
请帮我