私はこのような文字列を持っています:
mysz = "name=john age=13 year=2001";
文字列の空白を削除したいです。 trim()
を試しましたが、これは文字列全体の前後の空白だけを削除します。私はreplaceAll("\\W", "")
も試しましたが、それから=
も削除されます。
どのように私はと文字列を達成することができます:
mysz2 = "name=johnage=13year=2001"
st.replaceAll("\\s+","")
はすべての空白と見えない文字(例えばtab、\n
)を削除します。
st.replaceAll("\\s+","")
とst.replaceAll("\\s","")
は同じ結果になります。
2番目の正規表現は最初の正規表現より20%高速ですが、連続するスペースの数が増えるにつれて、最初の正規表現は2番目の正規表現よりもパフォーマンスが良くなります。
直接使用しない場合は、値を変数に割り当てます。
st = st.replaceAll("\\s+","")
replaceAll("\\s","")
\w
= Wordの文字ならなんでも
\W
= Wordの文字ではないもの(句読点などを含む)
\s
=スペース文字(スペース、タブ文字などを含む)
\S
=スペース以外の文字(文字と数字の両方、句読点など)
(編集:指摘したように、\s
を正規表現エンジンに到達させたい場合はバックスラッシュをエスケープする必要があり、その結果\\s
となります。)
質問に対する最も正しい答えは、次のとおりです。
String mysz2 = mysz.replaceAll("\\s","");
私はちょうど他の答えからこのコードを修正しました。私が投稿したのは、質問が要求したとおりのものであることに加え、結果は新しい文字列として返され、元の文字列は変更されないを暗示するようなものです。
(経験豊富なJava開発者は「もちろん、実際にはStringを変更することはできません」と言うかもしれませんが、この質問の対象読者はこれを知らないかもしれません。)
replaceAll("\\s", "")
はどうですか。 こちら を参照。
壊れないスペースも削除する必要がある場合は、次のようにコードをアップグレードできます。
st.replaceAll("[\\s|\\u00A0]+", "");
文字列操作を処理する1つの方法は、Apache commonsのStringUtilsです。
String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);
あなたはそれを見つけることができます ここ 。 commons-langはもっとたくさん含まれており、よくサポートされています。
正規表現よりもユーティリティクラスを好む場合は、Spring FrameworkのStringUtilsに trimAllWhitespace(String) というメソッドがあります。
あなたはすでにGursel Kocaから正しい答えを得ていますが、これがあなたが本当にやりたいことではないという可能性が高いと私は信じます。代わりにKey-Valueを解析してはどうでしょうか。
import Java.util.Enumeration;
import Java.util.Hashtable;
class SplitIt {
public static void main(String args[]) {
String person = "name=john age=13 year=2001";
for (String p : person.split("\\s")) {
String[] keyValue = p.split("=");
System.out.println(keyValue[0] + " = " + keyValue[1]);
}
}
}
出力:
name =ジョン
年齢= 13歳
年= 2001
あなたが使うべきです
s.replaceAll("\\s+", "");
の代わりに:
s.replaceAll("\\s", "");
このようにして、各文字列の間に複数のスペースがある場合に機能します。 上記の正規表現の+記号は、 "1つ以上の"を意味します
あなたはそう簡単にそれをすることができます
String newMysz = mysz.replace(" ","");
これを行う最も簡単な方法は、たとえば "org.Apache.commons.lang3.StringUtils
"のようなcommons-lang3
ライブラリのcommons-lang3-3.1.jar
クラスを使用することです。
あなたの入力文字列に静的メソッド "StringUtils.deleteWhitespace(String str)
"を使用してください。それはすべての空白を取り除いた後あなたに文字列を返します。私はあなたの例の文字列 "name=john age=13 year=2001
"を試してみました。それはあなたが望む文字列 - "name=johnage=13year=2001
"を正確に返してくれました。お役に立てれば。
public static void main(String[] args) {
String s = "name=john age=13 year=2001";
String t = s.replaceAll(" ", "");
System.out.println("s: " + s + ", t: " + t);
}
Output:
s: name=john age=13 year=2001, t: name=johnage=13year=2001
String a="string with multi spaces ";
//or this
String b= a.replaceAll("\\s+"," ");
String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//任意のスペースでうまく動作します *文字列bのスペースを忘れないでください
Pattern And Matcherを使うと、より動的になります。
import Java.util.regex.Matcher;
import Java.util.regex.Pattern;
public class RemovingSpace {
/**
* @param args
* Removing Space Using Matcher
*/
public static void main(String[] args) {
String str= "jld fdkjg jfdg ";
String pattern="[\\s]";
String replace="";
Pattern p= Pattern.compile(pattern);
Matcher m=p.matcher(str);
str=m.replaceAll(replace);
System.out.println(str);
}
}
Javaでは、以下の操作を実行できます。
String pattern="[\\s]";
String replace="";
part="name=john age=13 year=2001";
Pattern p=Pattern.compile(pattern);
Matcher m=p.matcher(part);
part=m.replaceAll(replace);
System.out.println(part);
そのためには、以下のパッケージをあなたのプログラムにインポートする必要があります。
import Java.util.regex.Matcher;
import Java.util.regex.Pattern;
お役に立てば幸いです。
mysz.replaceAll("\\s+","");
を使う
\W
は「Word以外の文字」を意味します。空白文字のパターンは\s
です。これは パターンjavadoc に詳しく説明されています。
mysz = mysz.replace(" ","");
まずスペースあり、次にスペースなし。
それが完了しました。
import Java.util.*;
public class RemoveSpace {
public static void main(String[] args) {
String mysz = "name=john age=13 year=2001";
Scanner scan = new Scanner(mysz);
String result = "";
while(scan.hasNext()) {
result += scan.next();
}
System.out.println(result);
}
}
NullPointerExceptionを避けるには、Apacheの文字列utilクラスを使用することをお勧めします。
org.Apache.commons.lang3.StringUtils.replace("abc def ", " ", "")
出力
abcdef
他にも文字列に存在するspace charがあります。したがって、space charは文字列から置き換える必要があるかもしれません。
例:ノーブレイクスペース、スリーパーエムスペース、句読点スペース
これはspace char /のリストです http://jkorpela.fi/chars/spaces.html
だから私たちは修正する必要があります
THREE-PER-EM SPACEについて
s.replaceAll( "[\ u0020\u2004]"、 "")
この問題を解決するには多くの方法があります。あなたは分割関数を使うことも、文字列の置換関数を使うこともできます。
詳細についてはsmilliar問題を参照してください http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
あなたの例でスペースを削除するには、これはそれを行うための別の方法です:
String mysz = "name=john age=13 year=2001";
String[] test = mysz.split(" ");
mysz = String.join("", mysz);
これは、スペースを区切り文字とする配列に変換してから、配列内の項目をスペースなしで結合します。
それはかなりうまくいき、理解しやすいです。
各テキストグループをそれぞれのサブストリングに分けてから、それらのサブストリングを連結します。 例
public Address(String street, String city, String state, String Zip ) {
this.street = street;
this.city = city;
//Now checking to make sure that state has no spaces...
int position = state.indexOf(" ");
if(position >=0) {
//now putting state back together if it has spaces...
state = state.substring(0, position) + state.substring(position + 1);
}
下記のJavaコードも見てください。以下のコードは「組み込み」メソッドを使用しません。
/**
* Remove all characters from an alphanumeric string.
*/
public class RemoveCharFromAlphanumerics {
public static void main(String[] args) {
String inp = "01239Debashish123Pattn456aik";
char[] out = inp.toCharArray();
int totint=0;
for (int i = 0; i < out.length; i++) {
System.out.println(out[i] + " : " + (int) out[i]);
if ((int) out[i] >= 65 && (int) out[i] <= 122) {
out[i] = ' ';
}
else {
totint+=1;
}
}
System.out.println(String.valueOf(out));
System.out.println(String.valueOf("Length: "+ out.length));
for (int c=0; c<out.length; c++){
System.out.println(out[c] + " : " + (int) out[c]);
if ( (int) out[c] == 32) {
System.out.println("Its Blank");
out[c] = '\'';
}
}
System.out.println(String.valueOf(out));
System.out.println("**********");
System.out.println("**********");
char[] whitespace = new char[totint];
int t=0;
for (int d=0; d< out.length; d++) {
int fst =32;
if ((int) out[d] >= 48 && (int) out[d] <=57 ) {
System.out.println(out[d]);
whitespace[t]= out[d];
t+=1;
}
}
System.out.println("**********");
System.out.println("**********");
System.out.println("The String is: " + String.valueOf(whitespace));
}
}
入力:
String inp = "01239Debashish123Pattn456aik";
出力:
The String is: 01239123456
Kotlin でst.replaceAll("\\s+","")
を使用するときは、必ず"\\s+"
を Regex でラップしてください。
"myString".replace(Regex("\\s+"), "")
public static String removeWhiteSpaces(String str){
String s = "";
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
if(temp!=32 && temp!=9){ // 32 ASCII for space and 9 is for Tab
s+=arr[i];
}
}
return s;
}
これは役に立つかもしれません。
空白文字は、Character ClassからisWhitespace関数を使用して削除できます。
public static void main(String[] args) {
String withSpace = "Remove white space from line";
StringBuilder removeSpace = new StringBuilder();
for (int i = 0; i<withSpace.length();i++){
if(!Character.isWhitespace(withSpace.charAt(i))){
removeSpace=removeSpace.append(withSpace.charAt(i));
}
}
System.out.println(removeSpace);
}