دوره زبان تخصصی برای برنامه‌نویسان (هدیه ویژه ثبت‌نام در دوره‌های متخصص) (فرصت محدود ⏰)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ حمیدرضا عباس زاده
مشکل در اجرای کد
جامعه گولنگ ایجاد شده در ۰۹ خرداد ۱۴۰۳

سلام من یک برنامه ی کوچک نوشتم که یک رشته را میگیرد و فاصله هم داشته باشد پاک میکند تا رشته به یک رشته خالص تبدیل شود و میاد حروف بزرگ رو تک تک میگه و حروف کوچک رو هم همینطور ولی یه مشکلی که داره یه حروف بزرگ خالی آخرش خروجی اضافه میده آیا راه دیگه ای هست که کد رو طوری دیگه بنویسم یا کد رو میشه اصلاح کرد اگر میشه منو راهنمایی کنید با تشکر

package main
import (
	"bufio"
	"fmt"
	"os"
	"strings"
)
func main() {
	reader := bufio.NewReader(os.Stdin)
	title, _ := reader.ReadString('\n')
	Clean_String(&title)
	addtitle(&title)
}
func Clean_String(title *string) {
	*title = strings.ReplaceAll(*title, " ", "")
}
func addtitle(title *string) {
	for _, item := range *title {
		it := string(item)
		if it == strings.ToUpper(it) {
			fmt.Println("Upper ", it)
		} else {
			fmt.Println("Lower ", it)
		}
	}
}

سلام،

مشکلت اینه که بعد از دریافت رشته و پاک کردن فاصله‌ها، یک کاراکتر بزرگ اضافی در خروجی نشون داده می‌شه. مشکل به خاطر کاراکتر خط جدید (\n) است که در انتهای رشته وارد شده باقی می‌مونه.

برای حل این مشکل، باید قبل از پاک کردن فاصله‌ها، کاراکتر خط جدید رو هم حذف کنی. کدت رو به این صورت اصلاح کن:

package main
import (
	"bufio"
	"fmt"
	"os"
	"strings"
)
func main() {
	reader := bufio.NewReader(os.Stdin)
	title, _ := reader.ReadString('\n')
	Clean_String(&title)
	addtitle(&title)
}
func Clean_String(title *string) {
	*title = strings.ReplaceAll(*title, " ", "")
	*title = strings.TrimSuffix(*title, "\n")
}
func addtitle(title *string) {
	for _, item := range *title {
		it := string(item)
		if it == strings.ToUpper(it) {
			fmt.Println("Upper ", it)
		} else {
			fmt.Println("Lower ", it)
		}
	}
}

توی تابع Clean_String از strings.TrimSuffix استفاده کردیم تا کاراکتر خط جدید رو حذف کنیم. موفق باشی😊

 

 

محسن موحد ۱۰ خرداد ۱۴۰۳، ۰۶:۰۸