java String去除两端的空格和空字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java String去除两端的空格和空字符相关的知识,希望对你有一定的参考价值。

我在写一个处理简历的程序,我的java文件原来是GBK,后来放到一个框架里面,我就把java文件拷到txt文档中再拷贝回来就是UTF8了,但是这样一来出现了一个问题。在字符串比较时总是出现问题,这个我只能用equals不能用contains(具体见下图),处理之前已经trim()了,后来又用正则,但是还是不行
String regex = "(^\\s*)|(\\s*$)/g"; line=line.replaceAll(regex, "");
请大神们指点一下
1.怎样去除前面的空字符?万分感谢
2.为什么我从GBK转到UTF-8后读取就会出现问题
不要从substring等截取,这样有的会有问题,最好就是像把智联招聘,自我评价,工作经历这样几个字就占一行的提取出来比我已知的关键字进行比较
第二幅图中,智联招聘就是与line比较,但是line的长度是5,智联招聘的长度是4

java中String有个trim()能够去掉一个字符串的前后空格。
但是trim()只能去掉字符串中前后的半角空格,而无法去掉全角空格。
去掉全角空格需要在trim()方法的基础上加上一些判断。
String textContent ="abctest ";
textContent = textContent.trim();
while (textContent.startsWith(" ")) //这里判断是不是全角空格
textContent = textContent.substring(1, textContent.length()).trim();

while (textContent.endsWith(" "))
textContent = textContent.substring(0, textContent.length() - 1).trim();
参考技术A

1、试试【字符串.replaceAll("\\\\s","")】或者【字符串.replaceAll(" ","")】

2、

BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(文件路径)),指定解码格式));

追问

都试过,不可以,你看一下,我的正则里面已经包括你说的了

参考技术B String里面有一个trim()方法专门是去开头空格的。追问

去看API,是去两端空格的

参考技术C 每次比较是用trim去掉空格追问

已经用了

参考技术D package day12;
import java.util.Scanner;
public class TestTrim
public static void main(String[] args)
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("请输入一串字符:");
String str=input.nextLine();
int start=0;
int end=str.length()-1;
while(start<=end&&str.charAt(start)==' ')
start++;//重头开始取空格字符索引位置下标

while(start<=end&&str.charAt(end)==' ')
end--;//重最后倒着取空格字符索引位置下标

String sc=str.substring(start, end+1);
System.out.println(sc);


去除字符串内的一些额外字符方法

在处理String对象时,有时候需要去除一些额外的字符,如:空格等

主要的方法:

  string.Trim()  常用   无参默认去除字符串两端的空格,多个空格也能一次性去掉;但是注意只是两段,内部无法控制!!

  string.Trim(char [])    当有多个特定字符需要去除的时候,用这种方法

 

  string.TrimStart( char c) 不常用  针对字符串首端去除指定标记

  string.TrimStart( char [])  针对字符串首端去除指定标记组

 

  string.TrimEnd( char c) 不常用 针对字符串末端去除指定标记

  string.TrimEnd( char [])  针对字符串末端去除指定标记组

 

string.Trim()默认方法是去除字符串两头的空格,中间的空格它去除不了,并且如果某一端空格两个及以上,它只能消除一个空格!!!

string.TrimStart只能对字符串开始端处理;string.TrimEnd只能对字符串末端处理!!!

下面是以上6种情况的学习操作的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            string words = "  _hh  _wo si _ ";
            Console.WriteLine("初始words:" + words);
            Console.WriteLine("初始words的字符个数:" + words.Length);
            Console.WriteLine();
            Console.WriteLine("========================");
            Console.WriteLine();

            string newWords = words.Trim();
            Console.WriteLine("使用Trim()方法所执行的结果:" + newWords);
            Console.WriteLine("使用Trim()方法后字符的个数:" + newWords.Length);

            char[] com = new char[] {  ,_};
            string newnewWords = words.Trim(com);
            Console.WriteLine("使用Trim(Char [])方法所执行的结果:" + newnewWords);
            Console.WriteLine("使用Trim(Char [])方法后字符的个数:" + newnewWords.Length);

            Console.WriteLine();
            Console.WriteLine("========================");
            Console.WriteLine();

           string triS = words.TrimStart( );
           Console.WriteLine("使用TrimStart(char c )方法所执行的结果:" + triS);
           Console.WriteLine("使用TrimStart(char c)方法所执行的结果:" + triS.Length);

           char[] com1 = new char[] {  , _ };
           triS = words.TrimStart(com1);
           Console.WriteLine("使用TrimStart(char [])方法所执行的结果:" + triS);
           Console.WriteLine("使用TrimStart(char [])方法所执行的结果:" + triS.Length);

           Console.WriteLine();
           Console.WriteLine("========================");
           Console.WriteLine();

           string triE = words.TrimEnd( );
           Console.WriteLine("使用TrimEnd(char c )方法所执行的结果:" + triE);
           Console.WriteLine("使用TrimEnd(char c)方法所执行的结果:" + triE.Length);

           char[] com2 = new char[] {  , _ };
           triE = words.TrimEnd(com2);
           Console.WriteLine("使用TrimEnd(char [])方法所执行的结果:" + triE);
           Console.WriteLine("使用TrimEnd(char [])方法所执行的结果:" + triE.Length);

            Console.ReadKey();
        }
    }
}

 

问题来了,如果我想得到一个连续的,连中间的空格也剔除掉的字符串,该怎么操作呢~?

 

思想:用Split方法借助要去除的标记当作参数把字符串分割成了一个字符数组,然后把这个字符数组里面的每个字符连续输出来

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            string words = ". I_ am   shang, ,qing_feng .";  

           // ArrayList list = new ArrayList();
            string[] word = words.Split(., _, , ,);//空格不写的情况下, I am   shang qingfeng 这不是我们想要的结果,所以把空格符也当作分割符

            foreach (string s in word)
                Console.Write(s);//Iamshangqingfeng
            Console.ReadKey();
        }
    }
}

 

以上是关于java String去除两端的空格和空字符的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE8基础 String trim 去除字符串两端的空格

JS中如何去除字符串的空格

java模拟一个trim方法,去除答案字符串两端的空白?

Java中关于String字符串五种常见的算法题目

Java中关于String字符串五种常见的算法题目

在javascript中如何去除字符串两头的空格