私はこのような文字列を持っています:
mysz = "name=john age=13 year=2001";
文字列の空白を削除したいのですが。私は試しましたtrim()
が、これは文字列全体の前後の空白のみを削除します。私も試しましたreplaceAll("\\W", "")
が、その後=
も削除されます。
どのようにして文字列を実現できますか?
mysz2 = "name=johnage=13year=2001"
私はこのような文字列を持っています:
mysz = "name=john age=13 year=2001";
文字列の空白を削除したいのですが。私は試しましたtrim()
が、これは文字列全体の前後の空白のみを削除します。私も試しましたreplaceAll("\\W", "")
が、その後=
も削除されます。
どのようにして文字列を実現できますか?
mysz2 = "name=johnage=13year=2001"
回答:
st.replaceAll("\\s+","")
すべての空白と見えない文字(例えば、タブ、\n
)を削除します。
st.replaceAll("\\s+","")
そして、st.replaceAll("\\s","")
同じ結果を生成します。
2番目の正規表現は最初の正規表現よりも20%高速ですが、連続するスペースの数が増えるにつれて、最初の正規表現は2番目の正規表現よりもパフォーマンスが向上します。
直接使用しない場合は、値を変数に割り当てます。
st = st.replaceAll("\\s+","")
質問に対する最も正しい答えは次のとおりです。
String mysz2 = mysz.replaceAll("\\s","");
私は他の答えからこのコードを適応させました。私がそれを投稿しているのは、質問が要求したものとまったく同じであるだけでなく、結果が新しい文字列として返され、元の文字列が一部の回答が示唆するように変更されていないことも示しているためです。
(経験豊富なJava開発者は「もちろん、実際には文字列を変更することはできません」と言うかもしれませんが、この質問の対象読者はこれをよく知らないかもしれません。)
S
が、指す文字列は上書きしませんS
。
壊れないスペースも削除する必要がある場合は、次のようにコードをアップグレードできます。
st.replaceAll("[\\s|\\u00A0]+", "");
" ab c "
正規表現よりもユーティリティクラスを使用する場合は、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]);
}
}
}
出力:
名前=ジョン
年齢= 13
年= 2001
あなたは使うべきです
s.replaceAll("\\s+", "");
の代わりに:
s.replaceAll("\\s", "");
このようにして、各文字列の間に複数のスペースがあっても機能します。上記の正規表現の+記号は、「1つ以上の\ s」を意味します
replaceAll
、パターンが文字列のどの部分にも一致しなくなるまで繰り返されることが原因と考えられます。
+
連続した空白文字を単一の置換操作で扱うが、それはこの場合の唯一の違いですされているので、それがわずかに多くのCPUに優しいことがあります。これは実際にAll
であり+
、文字列内の連続しない空白を置き換えるものではありません。
これを行う最も簡単な方法は、" " など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
」。お役に立てれば。
String a="string with multi spaces ";
//or this
String b= a.replaceAll("\\s+"," ");
String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//任意のスペースで正常に動作します*文字列bのスペースを忘れないでください
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;
お役に立てば幸いです。
パターンとマッチャーを使用すると、より動的になります。
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);
}
}
NullPointerExceptionを回避するには、Apache文字列のutilクラスを使用することをお勧めします
org.apache.commons.lang3.StringUtils.replace("abc def ", " ", "")
出力
abcdef
Kotlinで使用st.replaceAll("\\s+","")
する場合は、必ずRegexでラップしてください。"\\s+"
"myString".replace(Regex("\\s+"), "")
mysz = mysz.replace(" ","");
最初はスペースあり、2つ目はスペースなし。
その後、それが行われます。
[ \t\n\x0B\f\r]
ます。あなたは通常の[ ]
スペースだけをやっています。
この問題を解決する方法はたくさんあります。文字列の分割関数または置換関数を使用できます。
詳細については、見知らぬ問題を参照してください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);
これは、スペースを区切り文字とする配列に変換し、スペースなしで配列内の項目を結合することです。
それはかなりうまく機能し、理解しやすいです。
他にもスペース文字が文字列に存在します。したがって、スペース文字を文字列から置き換える必要がある場合があります。
例:NO-BREAK SPACE、THREE-PER-EMスペース、句読点スペース
ここにスペース文字のリストがありますhttp://jkorpela.fi/chars/spaces.html
したがって、変更する必要があります
\ u2004 EMあたり3つのスペース
s.replaceAll( "[\ u0020 \ u2004]"、 "")
空白は、文字クラスから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);
}
テキストの各グループを独自の部分文字列に区切り、それらの部分文字列を連結します。
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);
}
}
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;
}
これは役立つかもしれません。
以下の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
かなり多くの答えが提供されています。私は非常に読みやすく、正規表現よりも優れたソリューションを提供したいと思います。
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
public class RemoveAllWhitespaceTest {
public static void main(String[] args) throws IOException {
String str1 = "\n\tThis is my string \n \r\n !";
System.out.println("[" + str1 + "]");
System.out.println("Whitespace Removed:");
System.out.println("[" + StringUtils.deleteWhitespace(str1) + "]");
System.out.println();
}
}
\\W
すべての非単語はdownload.oracle.com/javase/6/docs/api/java/util/regex/…を