java中20个文字切割一下去空格

Posted

tags:

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

JAVA中字符去空格

1. str.trim();  去掉⾸尾空格

2. str.replace(" ", ""); 去掉所有空格,包括⾸尾、中间

String str = " hell o ";

String str2 = str.replaceAll(" ", "");

System.out.println(str2);

3. str.replaceAll(" +"," "); 把所有重复的空格合并成⼀个空格

4. str.replaceAll("\\s*", ""); 可以替换⼤部分空⽩字符,去掉空格很有效,但想替换为⼀个空格符就⾏不通不限于空格\s 可以匹配空格、制表符、换页符等空⽩字符的其中任意⼀个

在拆分字符时建议⽤如下⽅法:

先替换制表符为空格,再把所有重复的空格合并成⼀个空格,最后去⾸尾空格

str = str.replace("\t", " ").replaceAll(" +"," ").trim();

String[] arr = str.split(" ");

转义符说明:

\t:制表符

\n:换⾏符

\n\t:换⾏且⾏⾸空四格

\s:空格

\r:回车符

\\t:多见于正则表达式,\\s匹配字符串中的\和s两个字符,因为\在正则中有特殊意义,需要转义,所以前⾯加上了⼀个转义符\  


5
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
JAVA中字符去空格
JAVA中字符去空格

1. str.trim();  去掉⾸尾空格

2. str.replace(" ", ""); 去掉所有空格,包括⾸尾、中间

String str = " hell o ";

String str2 = str.replaceAll(" ", "");

System.out.println(str2);

3. str.replaceAll(" +"," "); 把所有重复的空格合并成⼀个空格

4. str.replaceAll("\\s*", ""); 可以替换⼤部分空⽩字符,去掉空格很有效,但想替换为⼀个空格符就⾏不通不限于空格\s 可以匹配空格、制表符、换页符等空⽩字符的其中任意⼀个

第 1 页
在拆分字符时建议⽤如下⽅法:

先替换制表符为空格,再把所有重复的空格合并成⼀个空格,最后去⾸尾空格

str = str.replace("\t", " ").replaceAll(" +"," ").trim();

String[] arr = str.split(" ");

转义符说明:

\t:制表符

\n:换⾏符

\n\t:换⾏且⾏⾸空四格

\s:空格

第 2 页
\r:回车符

\\t:多见于正则表达式,\\s匹配字符串中的\和s两个字符,因为\在正则中有特殊意义,需要转义,所以前⾯加上了⼀个转义符\  
参考技术A Java中可以使用String类的 split() 方法,将字符串分割成数组,然后去除空格:
String[] array = str.split("\\s+"); //以空格、回车符等不可见字符当做分隔符

美观化文字《汉字的切割问题》

注意:你可以认为所有中文字符由两个字节组成,首字节的ASCII值都大于127(也可以理解为signed char型小于0)

题目:

请看下面两段文字:

Kenny喊道:"我来了!"

Kenny喊道:“我来了!”

前面一段文字中由于在中文中使用了英文标点,显得不太美观。本题中你的任务是让任意一段文字美观化。美观化具体要求为将以下字符(串)转换为对应的中文字符:


英文 中文
, ,
. 。
! !
" “或”
<< 《
>> 》
? ?

Input输入文字只有一段。文字中可能含有中英文、符号以及控制符(换行、空格、制表符等)。Output按照要求输出美化后的文字段。 你不用翻译以上指定的符号之外的所有字符。Sample Input

Kenny喊道:"我来了!"

Sample Output

Kenny喊道:“我来了!”


        
 分析:
1.输入一换行符结束。
2.对双引号的处理分两种情况:1)英文的双引号,2)汉字符中也有双引号对后面和前面的干扰。
3.怎样判断汉字符
4.怎样在字符串中切割汉字符

代码如下:
#include<iostream>
#include<string.h>
using namespace std;
#define Max 10000
char source[Max];
char ch1[] = ",";
char ch2[] = "。";
char ch3[] = "!";
char ch4[] = "《";
char ch5[] = "》";
char ch6[] = "?";
char ch7[] = "“";
char ch8[] = "”";
int main()
{
 int n = 1;
 while (cin.getline(source, Max))
 {
  int pow = 0;
  int len = strlen(source);
  char chol[3];
  for (int i = 0; i < len; i++)
  {
   if (source[i] == ‘,‘){ printf("%s", ch1); }
   else if (source[i] == ‘.‘){ printf("%s", ch2); }
   else if (source[i] == ‘!‘){ printf("%s", ch3); }
   else if (source[i] == ‘?‘){ printf("%s", ch6); }
   else if (source[i] == ‘<‘&&source[i + 1] == ‘<‘)
   {
    i++;
    printf("%s", ch4);
   }
   else if (source[i] == ‘>‘&&source[i + 1] == ‘>‘)
   {
    i++;
    printf("%s", ch5);
   }
   else if (source[i] == ‘"‘)
   {
    if (n%2)
    {
     printf("%s", ch7);
     n++;
    }
    else
    {
     printf("%s", ch8);
     n++;
    }
   }
   else if (source[i] < 0)
   {
    chol[pow++] = source[i];
    if (pow == 2)
    {
     chol[pow] = ‘\0‘;
     printf("%s", chol);
     if (strcmp(chol, ch7) == 0){ n++; }
     if (strcmp(chol, ch8) == 0){ n++; }
     pow = 0;
    }
   }
   else
   {
    printf("%c", source[i]);
   }
  }
  printf("%c", ‘\n‘);
 }
 return 0;
}

算法分析:由于汉字符占两个字节而英语字符占一个,如果选择将英文字符换成汉字符的思想是不可行的。
因为每次交换都要向后移动部分数组或者将一段段的放到另一个数组中这样就会有遍历出现导致时间变长。
而在oj平台只是测试输出文件的内容是否正确就行。所以所采取的算法就是,遇到要转换的字符直接输出
需要转化的字符就行对字符串本身不做过多操作。
对双引号的处理有两种方法:1.使用奇数偶数,2.使用bool数(其实只要有两面性的表示都可以)

对汉字符的处理,判断char类型是否<0,若为汉字就每次存储两个字节在数组中就行。
数据结构:

对”“,《》因为是两个字节,所以必须以字符串的形式存储。

以上是关于java中20个文字切割一下去空格的主要内容,如果未能解决你的问题,请参考以下文章

字符串:大小写 去空格替换切割

java :6—20个字符,只能包含大小写,数字,标点(空格除外) 正则表达式怎么写?

java 按钮中文字的间距怎么设置?

1009 说反话 (20 分)

正则表达式匹配一段里的第一个空格?

java Regex:如何找到前面没有空格和逗号的实数