একটি স্ট্রিং (জাভা) এর শুরু এবং শেষ থেকে নতুনলাইনগুলি কীভাবে সরাবেন?


128

আমার একটি স্ট্রিং রয়েছে যাতে একটি ফাঁকা লাইন পরে কিছু পাঠ্য থাকে। অংশটি পাঠ্যের সাথে রাখার সর্বোত্তম উপায় কী তবে শেষ থেকে হোয়াইটস্পেসের নিউলাইনটি সরিয়ে ফেলুন?



1
না এইটা না. লিঙ্কের প্রশ্নটি বরং 'প্রতিস্থাপন' সম্পর্কে জিজ্ঞাসা করছে ..
ফয়েজ

উত্তর:


277

String.trim()স্ট্রিংয়ের শুরু এবং শেষ থেকে হোয়াইটস্পেস (স্পেস, নতুন লাইন ইত্যাদি) থেকে মুক্তি পাওয়ার জন্য পদ্ধতিটি ব্যবহার করুন ।

String trimmedString = myString.trim();

16
প্রশ্নটি নিউলাইনগুলি নিয়ে। এটি কেবলমাত্র নতুন
লাইনের

22
String.replaceAll("[\n\r]", "");

13
ব্রো, @ জনবি এটি স্ট্রিংয়ের মধ্যে থাকা সমস্ত নতুন লাইন চরিত্রকেও সরিয়ে ফেলবে। জিজ্ঞাসা হ'ল কেবল অগ্রণী এবং চলমান নতুন লাইন চরিত্রটিকে সরিয়ে ফেলা।
সিদ্ধার্থ

5

TL; ড

String cleanString = dirtyString.strip() ; // Call new `String::string` method.

String::strip…

পুরানো String::trimপদ্ধতিতে সাদা স্থানের একটি অদ্ভুত সংজ্ঞা রয়েছে ।

এখানে আলোচনা হিসাবে , জাভা 11 ক্লাসে নতুন strip…পদ্ধতি যুক্ত করে String। এগুলি হোয়াইটস্পেসের আরও ইউনিকোড-সচেতন সংজ্ঞা ব্যবহার করে। জাভাডক ক্লাসে এই সংজ্ঞাটির নিয়মগুলি দেখুনCharacter::isWhitespace

উদাহরণ কোড।

String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");

অথবা আপনি কেবল শীর্ষস্থানীয় বা কেবল অনুসরণ করতে পারেন সাদা স্থানটি ।

আপনি কী কোড পয়েন্ট (গুলি) আপনার নতুন লাইনগুলি আপ আপ তা উল্লেখ করবেন না । আমি ভেবেছি আপনার নিউলাইনটি সম্ভবত কোড টার্গেট দ্বারা চিহ্নিত কোড পয়েন্টগুলির এই তালিকায় অন্তর্ভুক্ত রয়েছে strip:

  • এটি একটি ইউনিকোড স্পেস ক্যারেক্টার (SPACE_SEPARATOR, LINE_SEPARATOR, বা PARAGRAPH_SEPARATOR) তবে এটি একটি ব্রেক-ব্রেকিং স্পেসও নয় ('\ u00A0', '\ u2007', '\ u202F')।
  • এটি '\ t', ইউ + 0009 আঞ্চলিক টোলেটেশন।
  • এটি '\ n', U + 000A লাইন ফিড।
  • এটি '\ u000B', ইউ + 000 বি ভার্চিকাল টোলোশন।
  • এটি '\ f', U + 000C ফর্ম ফিড।
  • এটি '\ r', ইউ + 000 ডি ক্যারিএজ প্রত্যাবর্তন।
  • এটি '\ u001C', ইউ + 001 সি ফাইল SEPARATOR।
  • এটি '\ u001D', ইউ + 001 ডি গ্রুপ SEPARATOR।
  • এটি '\ u001E', U + 001E রেকর্ড SEPARATOR।
  • এটি '\ u001F', ইউ + 0

4

এই জাভা কোডটি প্রশ্নের শিরোনামে যা জিজ্ঞাসা করা হয়েছিল ঠিক তাই করে, এটি হল "স্ট্রিং-জাভা শুরু এবং শেষ থেকে নিউলাইনগুলি সরান":

String.replaceAll("^[\n\r]", "").replaceAll("[\n\r]$", "")

কেবল রেখার শেষ থেকে নিউলাইনগুলি সরান:

String.replaceAll("[\n\r]$", "")

কেবল রেখার শুরু থেকে নিউলাইনগুলি সরান:

String.replaceAll("^[\n\r]", "")

আপনি কি আপনার উত্তরের অতিরিক্ত প্রসঙ্গ সরবরাহ করতে পারেন? এইভাবে প্রত্যেকে বুঝতে পারে আপনার কোডটি কী করে এবং কেন।
মারিয়ানো জোরিলা

আমি আমার উত্তরে ব্যাখ্যা যুক্ত করেছি। আমি আশা করি এটি এখন পরিষ্কার হয়ে গেছে।
আলেকজান্ডার সাময়লোভ

2

যদি আপনার স্ট্রিংটি সম্ভাব্য হয় তবে ব্যবহারটি nullবিবেচনা করুন StringUtils.trim()- এর নাল-নিরাপদ সংস্করণ String.trim()


1
String trimStartEnd = "\n TestString1 linebreak1\nlinebreak2\nlinebreak3\n TestString2 \n";
System.out.println("Original String : [" + trimStartEnd + "]");
System.out.println("-----------------------------");
System.out.println("Result String : [" + trimStartEnd.replaceAll("^(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])|(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])$", "") + "]");
  1. একটি স্ট্রিং শুরু = ^,
  2. একটি স্ট্রিং এর সমাপ্তি = $,
  3. regex কম্বিনেশন = | ,
  4. লাইনব্রেক = \ r \ n | [\ n \ x0B \ x0C \ r \ u0085 \ u2028 \ u2029]

0

আমি এর সাথে একটি উত্তর যুক্ত করতে যাচ্ছি কারণ আমার একই প্রশ্নটি ছিল, প্রদত্ত উত্তরটি যথেষ্ট ছিল না। কিছু চিন্তাভাবনা দেওয়া, আমি বুঝতে পারি যে এটি নিয়মিত প্রকাশের মাধ্যমে খুব সহজেই করা যায়।

শুরু থেকে নতুন লাইনগুলি সরাতে :

// Trim left
String[] a = "\n\nfrom the beginning\n\n".split("^\\n+", 2);

System.out.println("-" + (a.length > 1 ? a[1] : a[0]) + "-");

এবং একটি স্ট্রিং এর শেষে:

// Trim right
String z = "\n\nfrom the end\n\n";

System.out.println("-" + z.split("\\n+$", 2)[0] + "-");

আমি নিশ্চিত যে এটি কোনও স্ট্রিং ছাঁটাইয়ের সবচেয়ে কার্যকরী দক্ষ উপায় নয়। তবে এ জাতীয় অপারেশনটিকে ইনলাইন করার সবচেয়ে পরিষ্কার এবং সহজ উপায় বলে মনে হয়।

নোট করুন যে কোনও প্রান্ত থেকে সরল রেইজেক্স হিসাবে কোনও প্রান্ত থেকে অক্ষরগুলির কোনও প্রকরণ এবং সংমিশ্রণ ছাঁটাইতে একই পদ্ধতি করা যেতে পারে।


হ্যাঁ তবে আপনি যদি না জানেন তবে শুরুতে / শেষে কতগুলি লাইন রয়েছে? আপনার সমাধানটি ধরে নিয়েছে যে উভয় ক্ষেত্রেই 2 টি নতুন লাইন রয়েছে
লুকা গোভাদিড

এর দ্বিতীয় প্যারামিটারটি split()সীমাবদ্ধতা। আপনি যদি সীমাহীন সংখ্যক বারের সাথে মিল রাখতে চান তবে এটি ছেড়ে দিন।
Zhro

0

আপনি স্ট্রিংয়ের শুরু ( ) এবং শেষ ( ) থেকে ক্যারিড রিটার্ন ( \\r) এবং লাইন ফিডস ( \\n) এবং মুছে ফেলার জন্য নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারেন :^$

 s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)")

0

এটা চেষ্টা কর

function replaceNewLine(str) { 
  return str.replace(/[\n\r]/g, "");
}

-3
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");

2
এটি প্রশ্নের সঠিক উত্তর দেয় না। এটি সমস্ত সিআর এবং এলএফগুলি সরিয়ে দেয়, কেবল শুরু এবং শেষেরগুলিতে নয়।
james.garriss 26'15

এটি কেবল শুরু এবং শেষ থেকে নয়, সমস্তকে প্রতিস্থাপন করবে।
হামজেহ সোবহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.