串的簡單處理
串的處理
在實際的開發工作中,對字串的處理是最常見的程式設計任務。
本題目即是要求程式對使用者輸入的串進行處理。具體規則如下:
1. 把每個單詞的首字母變為大寫。
2. 把數字與字母之間用下劃線字元(_)分開,使得更清晰
3. 把單詞中間有多個空格的調整為1個空格。
例如:
使用者輸入:
you and me what cpp2005program
則程式輸出:
You And Me What Cpp_2005_program
使用者輸入:
this is a 99cat
則程式輸出:
This Is A 99_cat
我們假設:使用者輸入的串中只有小寫字母,空格和數字,不含其它的字母或符號。
每個單詞間由1個或多個空格分隔。
假設使用者輸入的串長度不超過200個字元。
法一:逐個char存入vector 迴圈判斷
import java.util.Scanner;
import java.util.Vector;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String string=sc.nextLine();
Vector<Character> vector=new Vector<Character>();
for(int i=0;i<string.length();i++){
vector.add(string.charAt(i));
}
int index=0;
while(index<vector.size()){
if(index==0 && vector.elementAt(index)>='a' && vector.elementAt(index)<='z'){
vector.set(index, (char) (vector.elementAt(index)-('a'-'A')));
}else if(vector.elementAt(index-1)==' ' && vector.elementAt(index)==' '){
vector.remove(index);
index--;
}else if(vector.elementAt(index-1)==' ' && vector.elementAt(index)>='a'&&vector.elementAt(index)<='z'){
vector.set(index, (char)(vector.elementAt(index)-('a'-'A')));
}else if((vector.elementAt(index)>='a'&&vector.elementAt(index)<='z')&&(vector.elementAt(index-1)>='0' && vector.elementAt(index-1)<='9')){
vector.add(index,'_');
index++;
}else if((vector.elementAt(index-1)>='a' && vector.elementAt(index-1)<='z') && (vector.elementAt(index)>='0'&&vector.elementAt(index)<='9')){
vector.add(index,'_');
index++;
}
index++;
}
for(int i=0;i<vector.size();i++)
System.out.print(vector.elementAt(i));
System.out.println();
}
}
法二:正規表示式,匹配 1:空格 2:數字 String陣列處理char
public class Main {
public static void main(String[] args) {
String str=(new Scanner(System.in)).nextLine();
String[] str1=str.split("[ ]+");//正規表示式匹配 [ ]內部可選 +:>=1個
String s="";
for(int i=0;i<str1.length;i++)
if('a'<=str1[i].charAt(0) && str1[i].charAt(0)<='z')
str1[i]=String.valueOf((char)(str1[i].charAt(0)-('a'-'A')))+str1[i].substring(1);
for(int i=0;i<str1.length-1;i++)
s+=str1[i]+" ";
s+=str1[str1.length-1];
Pattern p=Pattern.compile("([0-9]+)");
Matcher m=p.matcher(s);
int st=0;
String fin="";
while(m.find()){
int start=m.start();
int end=m.end();
fin+=s.substring(st,start);
if(start>1 && s.charAt(start-1)!=' ')
fin+="_";
fin+=m.group(1);
if(end<s.length() && s.charAt(end+1)!=' ')
fin+="_";
st=end;
}
if(st<s.length())
fin+=s.substring(st);
System.out.println(fin);
}
//you and me what 2005program
}
法三:String split 再 逐個匹配處理
public class Main {
static void print(String[] s){
for(int i=0;i<s.length-1;i++)
System.out.print(s[i]+" ");
System.out.println(s[s.length-1]);
}
public static void main(String[] args) {
String s=(new Scanner(System.in)).nextLine();
String[] ss=s.split("[\\s]+");
for(int i=0;i<ss.length;i++){
String up=(ss[i].charAt(0)+"").toUpperCase();
StringBuffer sb=new StringBuffer(ss[i]);
ss[i]=sb.replace(0,1,up)+"";
Matcher m=Pattern.compile("\\d+").matcher(ss[i]);
while(m.find()){
String num=new String(m.group());
String num2="_"+num+"_";
ss[i]=ss[i].replace(num,num2);
if(ss[i].startsWith("_"))
ss[i]=ss[i].substring(1);
if(ss[i].endsWith("_"))
ss[i]=ss[i].substring(0, ss[i].length()-1);
}
}
print(ss);
}
//you and me what 2005program
}
相關文章
- In-App Purchase 內購丟單、串單處理APP
- 簡單的字串處理字串
- 簡單的文字處理
- 藍橋杯-串的處理
- ORACLE的簡單處理高水位Oracle
- 基於Opencv的簡單影像處理OpenCV
- Java的簡單理解(22)---處理流Java
- 簡單實現批處理
- 簡單批處理內部命令簡介
- android簡單的圖形特效處理Android特效
- iOS換膚功能的簡單處理框架iOS框架
- TensorFlow進行簡單的影像處理
- 包含(處理)HTML的最簡單方法包括HTML
- 使用Lambda表示式處理簡單的業務
- 影象處理庫GPUImage簡單使用GPUUI
- php 處理訊號簡單演示PHP
- 處理一串字串的關鍵字字串
- Rust中錯誤處理的最簡單指南Rust
- 簡單的全域性異常統一處理
- 處理一些編譯警告的簡單編譯
- MySQL:簡單記錄訊號處理MySql
- go 處理 jsonArray 無 key 的 JSON 串GoJSON
- 圖片處理擴充套件 Grafika 的簡單使用套件
- java 如何簡單快速處理 xml 中的資料JavaXML
- 使用python進行簡單的媒體處理Python
- MongoDB觸發oom-killer的簡單處理(一)MongoDBOOM
- 一個慢查詢報警的簡單處理
- 圖形影像處理之簡單圖片
- js dom元素事件處理簡單介紹JS事件
- 圖片處理擴充套件 Intervention/image 的簡單使用套件
- EXCEL的重生!處理百萬行資料竟如此簡單Excel
- java 如何簡單快速處理 json 中的資料JavaJSON
- 一個簡單的 PHP 時間處理擴充套件PHP套件
- 簡單介紹Python 處理錯誤的原則Python
- Oracle密碼忘記簡單處理辦法Oracle密碼
- perl格式串處理整數溢位漏洞(轉)
- 簡單總結nodejs處理tcp連線的核心流程NodeJSTCP
- 基於 Python 的簡單自然語言處理實踐Python自然語言處理